Javascript использует UCS-2 для внутреннего использования, который не является UTF-16. Из-за этого очень трудно обрабатывать Unicode в Javascript, и я не предлагаю делать это.
Что касается того, что делает Твиттер, вы, похоже, говорите, что он разумно считает по кодам, а не безумно по кодам.
Если у вас нет выбора, вам следует использовать язык программирования, который фактически поддерживает Unicode и который имеет интерфейс кодовой точки, а не интерфейс кодовой единицы. Как вы обнаружили, Javascript недостаточно хорош для этого.
Имеет Проклятие UCS-2, , которое даже хуже, чем Проклятие UTF-16, , которое уже достаточно плохо. Я говорю обо всем этом в сообщении OSCON, Sho Перестрелка поддержки Юникода: ? Хорошее, плохое и (в основном) Гадкий ? .
Из-за его ужасного проклятия, вы должны вручную моделировать UTF-16 с UCS-2 в Javascript, который просто сумасшедший.
Javascript также страдает от всевозможных других ужасных проблем с Unicode. Он не поддерживает графемы, нормализацию или сопоставление, все, что вам действительно нужно. И его регулярные выражения нарушены, иногда из-за Проклятия, иногда просто потому, что люди ошиблись. Например, Javascript неспособен к выражению регулярных выражений типа [?-?]
. Javascript даже не поддерживает регистр, поэтому вы не можете написать шаблон, например /ΣΤΙΓΜΑΣ/i
, и правильно его сопоставить στιγμας .
Вы можете попробовать использовать плагин XRegEXp , но вы не будете изгонять проклятие таким образом. Это может сделать только переход на язык с поддержкой Unicode, и он не является одним из них.