Есть ли кодировка в Unicode, где каждый «символ» представляет собой только одну кодовую точку? - PullRequest
3 голосов
/ 05 января 2011

Попытка перефразировать: Можете ли вы отобразить каждую комбинацию символов в одну кодовую точку?

Я новичок в Unicode, но мне кажется, что нет кодировки, нормализации или представления, где один символ был бы одной кодовой точкой в ​​каждом случае в Unicode. Это правильно?

Это верно и для базовой многоязычной плоскости?

Ответы [ 3 ]

7 голосов
/ 05 января 2011

Если вы имеете в виду один символ == одно число (т. Е. Где каждый символ представлен одинаковым количеством байтов / слов / что-у-вас): в UCS-4 каждый символ представлен 4-байтовымчисло.Это более чем достаточно для того, чтобы каждый символ был представлен одним значением, но это довольно расточительно, если вам не нужен ни один из более высоких символов.

Если вы имеете в виду последовательности совместимости (т.е. где e+ ´ => é): существуют односимвольные представления для большинства комбинаций, используемых в существующих современных языках.Если вы создаете свой собственный язык, вы можете столкнуться с проблемами ... но если вы будете придерживаться тех, которые на самом деле используют люди, у вас все будет хорошо.

6 голосов
/ 06 января 2011

Можете ли вы сопоставить каждого комбинирующего персонажа объединение в одну кодовую точку?

Каждая комбинация символов? Как предложенная кодировка будет представлять строку "à ́̂̃̄̅̆̇̈̉̊̋̌̍̎̏̐̑̒̓̔̽̾̿̀́͂̓̈́͆͊͋͌̕̚ͅ͏͓͔͕͖͙͚͐͑͒͗͛ͣͤͥͦͧͨͩͪͫͬͭͮͯ͘͜͟͢͝͞͠͡"? («а» с более чем сотней комбинированных меток?) Это просто не практично.

Однако в Unicode есть много «заранее составленных» символов, таких как ççñü. Форма нормализации C будет использовать их вместо разложенной версии всякий раз, когда это возможно.

1 голос
/ 06 января 2011

мне кажется, что нет кодировки, нормализации или представления, где один символ был бы одной кодовой точкой в ​​каждом случае в Юникоде. Это правильно?

Зависит от значения значения слова «символ». Юникод имеет понятия абстрактный символ (определение 7 в главе 3 стандарта: «Единица информации, используемая для организации, контроль или представление текстовых данных ») и кодированный символ (определение 11:« Ассоциация (или отображение) между абстрактным символом и кодовой точкой »). Таким образом, символ никогда не является кодовой точкой, но для многих кодовых точек существует абстрактный символ, который отображается на кодовую точку, причем это отображение называется «закодированный символ». : «Один абстрактный символ также может быть представлен последовательностью кодовых точек»

Верно ли это и для базовой многоязычной плоскости?

Нет никаких концептуальных различий, связанных с абстрактными или закодированными символами, между BMP и другими плоскостями. Вышеприведенное утверждение верно для всех подмножеств кодового пространства.

В зависимости от вашего приложения вы должны различать термины глиф , графемный кластер , графем , абстрактный символ , кодированный символ , кодовая точка , скалярное значение , кодовая единица и байт . Все эти понятия различны, и между ними нет простого отображения. В частности, между этими сущностями почти никогда не происходит взаимно-однозначного сопоставления.

...