Алессандро Сегала опубликовал небольшой пост про нормализацию Unicode-строк "When 'Zoë' !== 'Zoë'. Or why you need to normalize Unicode strings".
Unicode - очень интересная тема, которая таит в себе много особенностей. Каким образом текст из заголовка статьи не может быть равен самому себе? Дело в том, что символ "ё" в Unicode может быть представлен как одиночным кодпойнтом, так и комбинацией двух кодпойнтов: символа "e" и символа умлаут. Из-за этого сравнение двух одинаковых (по внешнему виду) строк может вернуть
В конце статьи Алессандро призывает всегда приводить пользовательский ввод к каноничной форме – NFC.
#unicode #normalization
https://withblue.ink/2019/03/11/why-you-need-to-normalize-unicode-strings.html
Unicode - очень интересная тема, которая таит в себе много особенностей. Каким образом текст из заголовка статьи не может быть равен самому себе? Дело в том, что символ "ё" в Unicode может быть представлен как одиночным кодпойнтом, так и комбинацией двух кодпойнтов: символа "e" и символа умлаут. Из-за этого сравнение двух одинаковых (по внешнему виду) строк может вернуть
false. Для решения этой проблемы необходимо воспользоваться Unicode-нормализацией. В стандарт ES2015 для этого был добавлен метод String.normalize() с четырьмя формами нормализации: NFC, NFD, NFKC, NFKD.В конце статьи Алессандро призывает всегда приводить пользовательский ввод к каноничной форме – NFC.
#unicode #normalization
https://withblue.ink/2019/03/11/why-you-need-to-normalize-unicode-strings.html
withblue.ink
When "Zoë" !== "Zoë". Or why you need to normalize Unicode strings | With Blue Ink
Never heard of Unicode normalization? You’re not alone. But it will save you a lot of trouble.