Как уже отмечали другие, ваша главная ошибка - путаница латинского и кириллического алфавита и некоторых глифов в нем (а именно: C ( U + 0043 LATIN CAPITAL LETTER C ) и С ( U + 0421 ПИСЬМО КИРИЛЛИЧЕСКОГО КАПИТАЛА ES )). Есть много таких пар символов, которые похожи друг на друга, но это разные символы. Например, вы найдете много среди латинского, греческого и кириллического алфавита. Однако в большинстве случаев они работают только в верхнем или нижнем регистре.
Однако являются на самом деле дубликатами, иногда намеренно. Например, весь (ASCII) латинский алфавит представлен дважды в блоке Unicode «Полуширинные и Полноширинные формы» между U + FF00 и U + FFEF. Однако есть и другие подобные примеры, особенно в разделе математического алфавита на плоскости 1, где присутствуют еще три или четыре латинских алфавита.
Есть и другие вещи, которые на самом деле имеют один и тот же символ, но в разных точках кода. Например, есть µ ( U + 00B5 MICRO SIGN ) и µ ( U + 03BC ГРЕЧЕСКОЕ МАЛЕНЬКОЕ ПИСЬМО MU ). Они обычно связаны разложением .
Unicode имеет дело с абстрактным понятием под названием кодовая точка . Кодовая точка однозначно определяет символ и его сценарий или группу. Он говорит ничего о том, как будет отображаться соответствующий глиф в шрифте (который уже может сильно отличаться для латыни). Он также не определяет, как эта кодовая точка представлена в файле или памяти (то есть в виде последовательности байтов). Это работа для одного из форматов преобразования Unicode .
В чем причина иметь похожий символ на двух языках с разными кодами?
Основные пункты Unicode здесь:
- Совместимость с любой ранее существующей кодировкой символов. Это должно гарантировать, что для каждого символа, использованного в кодировке, существует однозначное сопоставление с прямым эквивалентом в качестве кодовой точки Unicode.
- Достоверно и точно представляет каждый сценарий, который используется в настоящее время, а затем расширен на другие сценарии, которые использовались и должны храниться в компьютерных системах.
Таким образом, существует очень сильный стимул хранить отдельные сценарии и , а не пытаться сопоставлять персонажей в соответствии с их внешним видом. Внешний вид может быть сложно в любом случае. Возьмем, к примеру, кириллицу «т», которая здесь выглядит как заглавная латинская буква «Т». Тем не менее, обычный способ визуализации отображается курсивом: 'т' выглядит как строчная латинская буква 'm'. Вы действительно не хотите отображать таких персонажей по внешнему виду.