JavaScript字符编码

4
在外部的javascript文件中,我有一个函数用于向表格单元格添加文本(在添加javascript文件的HTML文档中),有时文本可能包含芬兰字符(例如ä)。该文本作为参数传递给我的函数:
content += addTableField(XML, 'Käyttötarkoitus', 'purpose', 255);

问题是类似于“ä”这样的变音符号会被转换为其他无意义的字符,例如“�”。在浏览器中查看HTML文档时会出现这种情况。显然这是不可取的,而且很奇怪,因为HTML文档的字符编码是UTF-8。如何解决这个问题呢?感谢您提前帮助!

1
你所有的文件(包括 js 文件)都是以 UTF-8 编码提供的吗?请注意,有些服务器(如某些版本的 Tomcat)可能会破坏你的 JS 编码。 - Denys Séguret
1
不行,因为编辑器可能会解析它,但不能以相同的方式保存它。 - Sebas
@DenysSéguret,你有关于Tomcat如何破解JS编码的参考资料吗?我正在研究这个主题,参考资料会很有帮助。 - dj18
@dj18 抱歉,我不记得我已经因为这个原因停止使用哪个版本的Tomcat了,那是在2012年...但我希望你现在在2016年找不到它们。 - Denys Séguret
显示剩余4条评论
3个回答

4
包含 content += addTableField(XML, 'Käyttötarkoitus', 'purpose', 255); 的文件未以 UTF-8 编码保存。
我不知道你使用的是哪个编辑器,但你可以在设置或保存对话框中找到它。
例如: 如果你无法让它正常工作,你可以在 Javascript 中写出文字代码点。
content += addTableField(XML, 'K\u00E4ytt\u00f6tarkoitus', 'purpose', 255);

感谢triplee的贡献


1
无论如何,您可能希望使用'K\u00E4ytt\u00F5tarkoitus'以实现可移植性,尽管它很丑并且难以阅读。 - tripleee
@tripleee 谢谢,我已经编辑好了。顺便说一下,"ö"'\u00f6' :P - Esailija

1

要检查服务器宣布的字符编码,您可以使用Firebug(在Info菜单中,有一个查看HTTP头的命令)。或者,您可以使用在线服务,如Web-Sniffer

如果外部.js文件的标头指定了charset参数,则需要使用该编码,除非您可以更改相关的服务器设置(可能是.htaccess文件)。

如果它们缺少charset参数,则可以在script元素中指定编码,例如<script src="foo.js" charset="utf-8">

声明的编码当然应该与实际编码匹配,您通常可以在保存文件时选择它(如果需要,请使用“另存为”命令)。


0

HTML文件/文档的字符编码与任何外部资源无关。

您需要使用UTF8字符编码交付脚本文件。如果它被保存为这样,那么您的服务器配置是错误的。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接