Node.js源代码需要什么编码?

时间:2012-04-12 14:02:04

标签: javascript node.js unicode

我已经完成了一些Google搜索,但我得到了与编码字符串或文件相关的结果。

我可以以UTF-8编写我的Node.js JavaScript源代码吗?我可以在注释,字符串或变量名中使用非ASCII字符吗?

ECMA-262似乎require UTF-16 encoding,但Node.js不会运行UTF-16编码的.js文件。但是,它将运行UTF-8源并正确解释非ASCII字符。

这是设计还是“意外”?是否指定了支持UTF-8源代码的地方?

2 个答案:

答案 0 :(得分:0)

参考:http://mathiasbynens.be/notes/javascript-identifiers

UTF-8字符是有效的javascript变量名称。继续编码UTF-8。

答案 1 :(得分:0)

我找不到文档说明Node将文件视为以UTF-8编码的文件,但实验上似乎是这样:

/* Check in your editor that this Javascript file was saved in UTF-8 */
var nonEscaped = "Планета_Зямля";
var escaped = "\u041f\u043b\u0430\u043d\u0435\u0442\u0430\u005f\u0417\u044f\u043c\u043b\u044f";
if (nonEscaped === escaped) {
  console.log("They match");
}

以上示例打印They match

非BMP注意:

请注意,UTF-8支持非BMP代码点(U + 10000及以上),但Javascript在这种情况下有并发症,它会自动将它们转换为代理对。这是该语言的一部分:

/* Check in your editor that this Javascript file was saved in UTF-8 */
var nonEscaped = ""; // U+1F4A9
var escaped1 = "\ud83d\udca9";
if (nonEscaped === escaped1) {
  console.log("They match");
}
/* Newer implementations support this syntax: */
var escaped2 = "\u{1f4a9}";
if (nonEscaped === escaped2) {
   console.log("The second string matches");
}

这会打印They matchThe second string matches