【问题标题】:JavaScript variable name in ISO 8859-1 or UnicodeISO 8859-1 或 Unicode 中的 JavaScript 变量名
【发布时间】:2015-01-26 21:57:51
【问题描述】:

JavaScript 文档states: Starting with JavaScript 1.5, you can use ISO 8859-1 or Unicode letters such as å and ü in identifiers.

所以我试了一下:

<!DOCTYPE html>
<html lang="en">
<head>
    <title>JavaScript index</title>
    <script>

    var ü = 'tom';

    console.log( ü );

    </script>
</head>
</html>

控制台返回:Uncaught SyntaxError: Unexpected token ILLEGAL

是的,我在浏览器环境中:Chrome 40

为什么这是一个错误?

【问题讨论】:

  • 它在我的 chrome 40 中运行良好
  • 同样,对我来说很好。
  • 好的,我更新了代码以包含 HTML。仍然出现同样的错误。

标签: javascript variables unicode iso


【解决方案1】:

您没有向浏览器指出要使用什么编码来解析 HTML 文件。你应该在&lt;head&gt; 的开头添加一个&lt;meta charset="..."/&gt; 元素,让它知道你保存的编码是什么。 (我建议使用 UTF-8。)

根据错误,我怀疑您将文件保存为 UTF-8,但没有 meta 元素,浏览器会任意猜测该文件位于 Windows 代码页 1252(西欧)中。编码为UTF-8的字符ü是字节序列0xC3、0xBC。错误解码为 cp1252 的字节序列是 ü,这是一个非法变量名,因为 ¼ 不是字母。

【讨论】:

  • 谢谢。那成功了,这就是问题所在。我添加了 UTF-8 编码。你从哪里得到这些关于cp1252 and the necessary inclusion of the meta tag 的信息?只是好奇,以便将来我能更好地解决问题。
  • @samyismyhero 文本文件的编码在很大程度上是任意的,并且没有无条件指定它的标题,它可以解释。 &lt;meta&gt; 标签是 HTML 的作用方式。 XML 也有类似的技巧。
  • 而代码页 1252 是在英语或其他西欧语言环境中运行的浏览器最常见的猜测编码。当您看到 UTF-8-misinterpreted-as-Western-European mojibake 足够多次时,它们就很明显了。其他结果是可能的,因为浏览器如何在缺少字符集指示符的情况下猜测编码的故事确实是一个漫长而复杂的故事。
猜你喜欢
  • 2015-10-11
  • 2018-02-21
  • 2012-09-29
  • 2012-10-01
  • 2014-08-26
  • 2010-11-18
  • 2011-06-10
  • 2013-07-24
  • 2012-07-23
相关资源
最近更新 更多