2014-02-15 2 views
1

Я пытаюсь выполнить некоторые строковые методы с некоторым текстом, в котором встроен Emoji.Javascript + Emoji strangeness

Однако, это очень странно, что я видел:

"".length == 2 

Я просто интересно, как он решает, что выглядит как 1 символ для меня, на самом деле 2.

+1

К сожалению, JavaScript не полностью поддерживает Unicode (верьте или нет) из-за исторических причин. Вот хорошая статья: [JavaScript и Юникод] (http://blog.jochentopf.com/2011-03-17-javascript-and-unicode.html). –

+0

Спасибо. В этой статье немного выяснилось, я работаю над этим, убедившись, что я вычисляю длину символов –

ответ

0

В Javascript, строка представляет собой последовательность из 16-битных кодовых точек. Поскольку emoji> кодируются над BMP, это означает, что они представлены парой> кодовых точек, также называемой суррогатной парой. Так, например, 0x1F600, который, представлен:

"\ uD83D \ uDE00"

Если вы готовы пойти дальше этого, вы можете прочитать эту статью : Emojis in Javascript - Parsing emoji in Javascript is… not easy.

Смежные вопросы