Как сравнить строки Unicode, чтобы строки, которые выглядят одинаково, сравнивались одинаково? - PullRequest
2 голосов
/ 23 октября 2011

Многие последовательности закодированных символов Unicode имеют одинаковое визуальное представление и одинаковое вычислительное значение.

Символ ñ можно кодировать двумя способами:

U+00F1:  ñ   (LATIN SMALL LETTER N WITH TIDLE)

или

U+006E:  n   (LATIN SMALL LETTER N)
U+0303:  ~   (COMBINING TILDE)

Это создает 10 различных последовательностей байтов, которые отображаются как:

U+00F1 in UTF-8, UTF-16LE, UTF-16BE, UTF-32BE, UTF32-LE 
U+006E followed by U+0303  UTF-8, UTF-16LE, UTF-16BE, UTF-32BE, UTF32-LE 

Есть ли какой-нибудь простой способ сравнить строки Unicode (я доволен символами Unicode, которые были декодированы из различных представлений UTF) и выяснить, что они одинаковы? То есть я хочу что-то, что говорит мне, что U + 00F1 совпадает с U + 0303 U + 006E

Спасибо.

1 Ответ

4 голосов
/ 23 октября 2011

Процесс называется нормализация , поддерживаемый любой приличной библиотекой Unicode. Backgrounder здесь .

...