使用UTF-16字符编码编写Javascript

时间:2012-10-22 14:46:13

标签: javascript web-applications character-encoding utf-16

这是我正在尝试但不确定如何使其工作或甚至可能 -

  1. 我有一个HTML页面MyHTMLPage.htm,我希望src来自此HTML文件的Javascript。这非常简单。我计划在我的HTML文件中加入<script src = "MyJavascript.js"></script>标记,并且应该处理它。

  2. 但是,我想使用UTF-16编码创建我的Javascript文件。因此,我计划在我的HTML文件中使用以下标记<script charset="UTF-16" src="MyJavascript.js"></script>来处理

  3. 现在我真正遇到的问题是如何使用UTF-16编码创建Javascript - 例如。假设我的Javascript代码是alert(1);我创建了我的Javascript文件,其内容为\u0061\u006c\u0065\u0072\u0074\u0028\u0031\u0029\u003b,但在运行时似乎没有作为有效的Javascript执行。

  4. 总结一下,这就是我所拥有的 -

    MyHTMLPage.html

    ...
    ...
    ...
    <script charset="UTF-16" src="MyJavascript.js"></script>
    ...
    ...
    ...
    

    MyJavascript.js

    \u0061\u006c\u0065\u0072\u0074\u0028\u0031\u0029\u003b
    

    当我在Firefox中打开HTML页面时,我在Syntax error - Illegal character文件的开头就出现了错误 - “MyJavascript.js”。我也尝试在上面的Javascript开头添加BOM字符“\ufeff”,但我仍然遇到同样的错误。

    我知道我可以创建我的Javascript文件 - “alert(1);”,然后使用文本编辑器使用UTF-16编码保存它,然后浏览器运行正常但是有一种方法我可以使用“{ {1}}“符号(或替代转义字符)仍然可以让Javascript执行正常吗?

    谢谢,

1 个答案:

答案 0 :(得分:3)

你误解了字符编码。字符编码是字符如何在幕后表示为位的方案。

你不会在你的文件中写\u004a来“make it utf-16”,因为它实际上是一个由6个字符组成的序列:

\u004a

如果你将上面的内容保存为utf-16,它将表示为以下位:

005C0075
00300030
00340061

如果你把它保存为utf-8那就是:

5C753030
3461

占用50%的空间和带宽。按字面意思("J")写字符只需要更少:只需一个字节 (4A)在utf-8中。

"\u" - 表示法是一种通过使用一小组ascii字符来引用任何BMP字符的方法。如果你是 使用没有unicode支持的文本编辑器,您可以编写"\u2665",而不是字面上写"♥"和 浏览器会正确显示它。

如果您出于某些奇怪的原因仍然想使用utf-16,只需正常编写代码,将文件保存为utf-16并使用正确的字符集标题提供。