我在我的应用中使用angular-translate模块。它在Chrome中运行良好,但在Firefox中,任何包含unicode字符的语言文件都会失败。
当我直接通过浏览器请求json文件时,它会显示正常,但当我通过Firebug查看文件时,我看到如下内容:
ÿþ{�
�
� �"�*�*�
我在Firebug中使用translate模块看到了相同的内容。浏览器似乎正确呈现了unicode字符,但出于某种原因,角度转换(通过ajax请求)却没有。在Chrome中它一切都运行得非常好,所以我猜测在Chrome中有一些预处理文件可能在Firefox上没有出现之前就是它的Angular翻译模块。
有没有人经历过类似的事情?
答案 0 :(得分:2)
您已使用UTF-16LE编码保存.json文件。这是在Web上使用的不良选择,因为它不兼容ASCII。它可能在浏览器中看起来很好用于ASCII字符,但仅仅因为浏览器将丢弃Firebug显示为�
的零字节。 Windows误导性地将UTF-16LE编码称为“Unicode”,这使其成为一个有吸引力的陷阱。
XMLHttpRequest(可能是angular-translate将依赖)将响应解释为UTF-8,除非另有说明。因此,您应该以UTF-8编码保存JSON文件。