【问题标题】:Handle special characters in JavaScript处理 JavaScript 中的特殊字符
【发布时间】:2012-09-18 03:38:14
【问题描述】:

我有一个网页,代码如下:sn-p:

...
<td nowrap="true" valign="top" width="190px" class="ms-formlabel">
   <h3 class="ms-standardheader">
      <nobr>
         QA Groupe des papiers
         <span class="ms-formvalidation" title="Ce champ est obligatoire." > *</span>
      </nobr>
   </h3>
</td>
...
<td nowrap="true" valign="top" width="190px" class="ms-formlabel">
   <h3 class="ms-standardheader">
      <nobr>
         QA Description métier
         <span class="ms-formvalidation" title="Ce champ est obligatoire." > *</span>
      </nobr>
   </h3>
</td>
<td valign="top" class="ms-formbody">
...

我正在开发一个 JavaScript,它应该隐藏包含字符串 QA Groupe des papiersQA Description métier 的表格行。

这是脚本:

<script type="text/javascript" src="jquery.min.js"></script>
<script type="text/javascript">
    jQuery(document).ready(function($) {
       $("h3.ms-standardheader:contains('QA Groupe des papiers')").closest("tr").hide();
       $("h3.ms-standardheader:contains('QA Description métier')").closest("tr").hide();
    });
</script>

脚本在第一行运行良好,但第二行不行。我知道问题与第二个脚本中的特殊字符é 有关,但我不知道如何解决问题。请帮忙,谢谢。

【问题讨论】:

  • é替换为对应的unicode代码点\uXXXX
  • 对我来说它可以工作(带有 Chrome 浏览器的 jQuery 1.8.1)。
  • @greengit,我发现é 代码是\u00E9。但以下行不起作用: $("h3.ms-standardheader:contains('QA Description m\" + \u00E9 + "tier')").closest("tr").hide();你能帮帮我吗?

标签: javascript asp.net html-parsing special-characters


【解决方案1】:

Unicode 是一个复杂的东西。该字符集有两种不同的书写字符,如áé等。

将其中一个 é 字符替换为另一个字符可能会解决您的问题。 (你可以read more about this at Wikipedia。)

如果您仍然遇到问题,还请检查编码 JavaScript 文件和网页使用的编码。

网页和 JavaScript 文件都应采用 UTF-8 编码并将其传达给浏览器。这意味着该网页必须至少具有以下一项

  • 指定字符编码的 HTTP 标头;例如Content-Type: text/html; charset=UTF-8
  • 一个meta标签,指定编码; &lt;meta charset=UTF-8&gt; (HTML5) 或 &lt;meta http-equiv=Content-Type content='text/html; charset=UTF-8&gt;
  • Byte Order Mark (not recommended)

可以使用以下一种或多种方法将 JavaScript 文件指示为 UTF-8:

  • 使用charset 属性
  • 使用指定字符编码的 HTTP 标头;例如Content-Type: text/javascript; charset=UTF-8

进一步阅读:

【讨论】:

  • 一般的 Unicode(UTF-8 只是 Unicode 的一种传输编码)有两种写法 é,但在发布的代码中,这两种(通用)预组合形式都贯穿始终。
【解决方案2】:

可能的解释是 JavaScript 文件的字符编码没有在 HTTP 标头中正确声明。可能 JavaScript 文件被解释为 ISO-8859-1 或 Windows-1252 编码,但实际上是 UTF-8 编码,反之亦然,这意味着“é”不是它应该的样子。一个简单的检查方法是alert('é')。关于编码问题,请查看 W3C 页面Character encodings

【讨论】:

  • $('head').append('&lt;meta http-equiv="Content-Type" content="text/html; charset=utf-8" /&gt;'); 添加到脚本中解决了这个问题。谢谢尤卡!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-24
  • 2012-11-14
  • 2017-07-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多