Вопрос по unicode, node.js, javascript – Какая кодировка ожидается для исходного кода Node.js?

7

Я провел несколько поисков в Google, но получил результаты, связанные с кодировкой строк или файлов.

Могу яwrite мой исходный код JavaScript Node.js в UTF-8? Могу ли я использовать не-ASCII символы в комментариях, строках или в качестве имен переменных?

ECMA-262 кажетсятребуется кодировка UTF-16, но Node.js не запустит кодировку UTF-16.js файл. Однако он будет работать с исходным кодом UTF-8 и правильно интерпретировать символы, не входящие в ASCII.

Так это по замыслу или по & # x201C; аварии & # x201D ;? Где-то указано, что исходный код UTF-8 поддерживается?

Вы ссылаетесь на очень старую версию спецификации (3-я редакция от 1999 года, мы только что выпустили 6-ю версию в прошлом июне). Текущая версияhere, Требование «Юникод» (с условием, что ASCII является подмножеством юникода, поскольку нижние 127 кодовых точек в юникоде такие же, как указано в кодировке ASCII) Mike 'Pomax' Kamermans
Я надеялся, что кто-то может указать, скажем, документацию Node.js или V8, в которой говорится, какие исходные кодировки разрешены. (Пример Python:python.org/dev/peps/pep-0263). Да, я могу и сделал futz вокруг и посмотреть, что работает, но я хочу более конкретный ответ. Nate
Я ожидаю, что это не столько вещь Node.js, сколько вещь V8. Pointy
Я никогда не уделял этому ни секунды, но я постоянно использую UTF-8 для всего, что я делаю, и у меня никогда не было проблем. Alex Turpin

Ваш Ответ

2   ответа
0

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

Символы UTF-8 являются допустимыми именами переменных JavaScript. Идем дальше и кодируем UTF-8.

Error: User Rate Limit Exceededvar Hͫ̆̒̐ͣ̊̄ͯ͗͏̵̗̻̰̠̬͝ͅE̴̷̬͎̱̘͇͍̾ͦ͊͒͊̓̓̐_̫̠̱̩̭̤͈̑̎̋ͮͩ̒͑̾͋͘Ç̳͕̯̭̱̲̣̠̜͋̍O̴̦̗̯̹̼ͭ̐ͨ̊̈͘͠M̶̝̠̭̭̤̻͓͑̓̊ͣͤ̎͟͠E̢̞̮̹͍̞̳̣ͣͪ͐̈T̡̯̳̭̜̠͕͌̈́̽̿ͤ̿̅̑Ḧ̱̱̺̰̳̹̘̰́̏ͪ̂̽͂̀͠ = 'Zalgo';
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded Nate
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.

Non-BMP note:

Обратите внимание, что 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 match а такжеThe second string matches.

Похожие вопросы