UTF8 Строка, не позволяющая charAt () или подстроке извлекать указанные c символов - PullRequest
0 голосов
/ 21 января 2020

В моем коде я пытаюсь выделить первый символ переменной, это символ UTF8: code Код для вывода следующий:

Код:

 console.log(login_name);
 console.log(login_name.charAt(0));
 console.log(login_name.substring(0,1));

Вывод:

 ? ✨✨✨UTF8MB4
 �
 �

Очевидно, я хочу, чтобы .charAt () печатал ?, а не �. Какие-нибудь известные странности с utf8mb4, которые мне не хватает? Моя главная проблема в том, что я не знаю, как сформулировать эту конкретную c проблему.

Также, если я поменяю радугу на / на цель ✨, она функционирует так, как должна и печатает правильно.

1 Ответ

0 голосов
/ 21 января 2020

JavaScript не может правильно обрабатывать Unicode. charAt() работает с кодовыми единицами вместо кодовых точек.

К счастью JavaScript есть обходные пути. Чтобы получить символы в строке вместо кодовых единиц UTF-16 / UCS-2, вам нужно вызвать Array.from(yourstring), чтобы получить массив символов. Оттуда вы можете получить первый элемент обычным способом.

let characters = Array.from(login_name);
console.log(characters.shift());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...