Есть ли кодировка в Unicode, где каждый "символ" представляет собой только одну кодовую точку?
Попытка перефразировать: Можете ли вы отобразить каждую комбинацию символов в одну кодовую точку?
Я новичок в Unicode, но мне кажется, что нет кодировки, нормализации или представления, где один символ был бы одной точкой кода в каждом случае в Unicode. Это правильно?
Это верно и для базовой многоязычной плоскости?
3 ответа
Если вы имеете в виду один символ == одно число (то есть: где каждый символ представлен одинаковым количеством байтов / слов / что-у-вас): в UCS-4 каждый символ представлен 4-байтовым числом. Это более чем достаточно для того, чтобы каждый персонаж был представлен одним значением, но это довольно расточительно, если вам не нужны какие-либо более высокие символы.
Если вы имеете в виду последовательности совместимости (то есть: где e + ´ => é): существуют односимвольные представления для большинства комбинаций, используемых в существующих современных языках. Если вы создаете свой собственный язык, вы можете столкнуться с проблемами... но если вы будете придерживаться тех, которые на самом деле используют люди, у вас все будет хорошо.
Можете ли вы отобразить каждую комбинацию символов в одну кодовую точку?
Каждая комбинация символов? Как бы ваша предложенная кодировка представляла строку "à̴̵̶̷̸̡̢̧̨̛̖̗̘̙̜̝̞̟̠̣̤̥̦̩̪̫̬̭̮̯̰̱̲̳̹̺̻̼͇͈͉͍͎́͂̓̈́͂̓̈́?"? ("а" с более чем сотней комбинированных меток?) Это просто не практично.
Однако в Unicode есть много "заранее составленных" символов, таких как ççñü. Форма нормализации C будет использовать их вместо разложенной версии, когда это возможно.
мне кажется, что нет кодировки, нормализации или представления, где один символ был бы одной кодовой точкой в каждом случае в Юникоде. Это правильно?
Зависит от значения значения слова "символ". Юникод имеет понятия абстрактного символа (определение 7 в главе 3 стандарта: "Единица информации, используемая для организации, контроля или представления текстовых данных") и закодированный символ (определение 11: "Ассоциация (или отображение) между абстрактным символом и кодовой точкой"). Таким образом, символ никогда не является кодовой точкой, но для многих кодовых точек существует абстрактный символ, который отображается на кодовую точку, причем это отображение называется "закодированный символ". Но (определение 11, пункт 4): "Один абстрактный символ также может быть представлен последовательностью кодовых точек "
Это верно и для базовой многоязычной плоскости?
Между BMP и другими плоскостями нет концептуальной разницы, связанной с абстрактными или закодированными символами. Вышеприведенное утверждение верно для всех подмножеств кодового пространства.
В зависимости от вашего приложения вы должны различать термины глиф, кластер графем, графема, абстрактный символ, закодированный символ, кодовая точка, скалярное значение, кодовая единица и байт. Все эти понятия различны, и между ними нет простого отображения. В частности, между этими объектами почти никогда не происходит однозначного сопоставления.