【问题标题】:Defining the character encoding of a JavaScript source file定义 JavaScript 源文件的字符编码
【发布时间】:2011-01-20 11:18:31
【问题描述】:

我想向我的德国用户打印一条包含变音符号 (ä/ü/ö) 的状态消息。我也希望它们位于源文件中,而不必仅为消息下载和解析一些额外的文件。

但是,我似乎找不到定义 JS 源文件编码的方法。有没有类似于 HTML 的 http-equiv 的东西?还是应该在 HTTP 标头中定义编码?

当我简单地将文件编码为 UTF-8 并提供服务时,IE 显示垃圾。

【问题讨论】:

标签: javascript unicode encoding


【解决方案1】:

在标头中发送编码总是一个好主意。

如果这不可能,<script> 标记具有charset 属性。 W3C Reference

<script src="translations.js" type="text/javascript" charset="utf-8"/>

【讨论】:

    【解决方案2】:

    在 HTML5 中似乎不推荐使用 script 标签的 charset 属性(它仅适用于 a 和 link 标签)。

    【讨论】:

      【解决方案3】:

      这听起来可能有点愚蠢,但请确保在您使用的编辑器中使用正确的编码保存您的 javascript 文件。我的javascript文件的编码有问题,解决方法就是这么简单!

      【讨论】:

        【解决方案4】:

        虽然 charset 参数看起来很有帮助,但重要的是要注意它实际上在 HTML5 中已被弃用。

        http://www.w3.org/International/questions/qa-html-encoding-declarations#charset

        【讨论】:

        • 那还有什么办法呢?
        • @MicahHenning 如果您无法在 HTTP 标头中定义它怎么办?
        • 或者,如果您不使用 Web 服务器并在本地运行 HTML 文件怎么办?
        • HTML5 不会弃用脚本标记上的属性 charset。上面的链接只处理链接而不是脚本。 w3.org/TR/html5/scripting-1.html#attr-script-charset
        • @VernBurton 是的,你是对的。也许在 2012 年 6 月,当我发表这篇文章时,我的理解是 charset 参数已被弃用,但后来又被重新添加。毕竟,HTML 5 直到 2014 年底才最终确定。
        【解决方案5】:

        对于法语 javascript js,我们使用了另一个字符集:

        <script src="./js/MyScript.js" type="text/javascript" charset="iso-8859-1"></script>
        

        【讨论】:

        • 你应该使用 utf-8,这个字符集将允许 iso-8859-1 字符等等。
        • 当然,除非您明确希望支持 不超过 好 ole French ;)
        【解决方案6】:

        解决问题的最简单方法是对字符串中的特殊字符使用 unicode 转义。这样,您的代码就不会受到托管它的页面的影响。

        可能对您有所帮助的工具:http://www.webstein.net/tools/javascript-unicode

        【讨论】:

        • 链接已失效。
        猜你喜欢
        • 2016-04-12
        • 1970-01-01
        • 2012-08-26
        • 1970-01-01
        • 2012-03-25
        • 2019-07-14
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多