почему значение unicode отличается для символа '?' в nodejs и python? - PullRequest
1 голос
/ 25 марта 2019

Почему значение unicode символа '?' отличается в nodejs и python.

nodejs (версия 8.11) дает вывод "?" .charCodeAt (0) как 55357

, где какВывод python (версия 2.7 или 3.6) ord ('?' [0]) как 128515

согласно https://www.fileformat.info/info/unicode/char/1f603/index.htm 128515 является правильным.так почему nodejs дает другое число?

1 Ответ

3 голосов
/ 25 марта 2019

Потому что JavaScript не реализует правильную кодировку Unicode (которая обращается к 1114112 кодовым точкам), но UCS-2 (которая обращается только к 65536). Так называемые астральные символы кодируются в JavaScript как два символа UCS-2; ваш charCodeAt(0) показывает только первый из них.

В JavaScript есть новая функция, которая исправляет это:

console.log("?".codePointAt(0))

MDN имеет polyfill , где вы можете изучить математику за переводом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...