如何在javascript中放入unicode字符

时间:2015-05-16 06:37:04

标签: javascript unicode backend

我将BaaS用于我的前端。它允许我使用我的后端逻辑上传一个javascript文件。我可以在客户端通过REST API使用它。 在其他服务中,我实施了本地化服务。字符串预定义如下:

var locals = {
"EN": {
    "1": "Home",
    "2": "Ready"
},
"BG": {
    "1": "Начало",
    "2": "Готово"
}

在这个例子中,我提供英语和保加利亚字符串的本地化。 问题是BaaS系统不尊重西里尔字符(Unicode)。 当我上传包含上述内容的脚本时,所有的西里尔字符都被替换为“????”。

我可以使用this method来解决问题,但不推荐使用escape / unescape函数。 有没有更好的解决方案? 避免这个问题的最有效方法是什么?

1 个答案:

答案 0 :(得分:6)

要在未安装Unicode安全的JavaScript文件中引用非ASCII字符,请使用JS字符串文字字符转义:\uNNNN其中NNNN是UTF-16代码单元的十六进制数与字符串相关联(与基本多语言平面中的字符的代码点编号相同)。

"BG": {
    "1": "\u041d\u0430\u0447\u0430\u043b\u043e",
    "2": "\u0413\u043e\u0442\u043e\u0432\u043e"
}

西里尔字符here的代码点列表。您也可以使用Firefox的toSource方法为您解决问题:

> 'Начало'.toSource()
(new String("\u041D\u0430\u0447\u0430\u043B\u043E"))
  

当我上传包含上述内容的脚本时,所有西里尔字符都替换为" ????"。

你确定这是“BaaS”的错吗?我们无法告诉您,因为您没有告诉我们这项服务是什么,甚至是什么样的服务。

如果它是您通过Ajax获取的JS文件,则需要将文件保存为UTF-8编码,以便能够使用非ASCII字符,而无需按上述方式对其进行编码。如果您使用脚本元素包含它,则还需要将HTML页面保存为UTF-8并包含UTF-8 meta charset指令。