Каково назначение нехарактеров от U + FDD0 до U + FDEF? - PullRequest
45 голосов
/ 04 марта 2011

U + FFFE должен быть нехарактерным, чтобы разрешить работу метки порядка байтов.

U + FFFF описан в Стандарте Юникода как "полезный для внутренних целей в качестве стражей". Имеет смысл.

Но я не могу понять, и Стандарт Юникода на самом деле не объясняет, почему набор нехарактерных символов включает в себя некоторый случайный блок в «Арабских формах представления-А». Что это за для ? (Кроме глаз василиска ?)

Ответы [ 3 ]

42 голосов
/ 07 марта 2011

ОК, вопрос «для чего они» и «почему они находятся в середине арабских форм представления».

  • Потребовался блок из 32 не-символов, "чтобы дополнительные коды были доступны программистам для использования в целях внутренней обработки" http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&id=IWS-Chapter04a#4d3110c8
  • Требовалось, чтобы он был в Базовой многоязычной плоскости (BMP), то есть от 0x0000 до 0xFFFF, чтобы они могли иметь представления с одной кодовой точкой в ​​UTF-16.
  • В блоке арабских форм презентаций был блок неиспользуемых кодовых точек.
  • Было решено не кодировать больше арабских презентационных форм, поэтому они никогда не будут использоваться. http://www.unicode.org/mail-arch/unicode-ml/y2001-m10/0014.html

Поэтому было решено, что эти кодовые точки, которые никогда не будут использоваться в противном случае, будут обозначаться как нехарактерные, чтобы они могли использоваться приложениями / программистами для внутреннего использования.

15 голосов
/ 05 марта 2011

Эти нехарактеры предназначены для внутреннего использования приложением и не должны взаимозаменяться.

Я пытался объяснить, основываясь на том, что сказано в стандарте Unicode.

Unicode получил66 не персонажей.Для всех 17 самолетов у них есть две каждая, последние две кодовые точки плоскости, заканчивающиеся FFFE FFFF.32 других не-символа являются непрерывным блоком от U + FDD0 до U + FDEF.

Итак, общее количество

 17*2 + 32 = 66

Прочитайте следующий текст из главы 16 Unicode, в которой говорится, что это в каком-то случайном месте из-за «исторической причины», мне любопытно, но я неНе думаю, что есть какая-то двусмысленность.

По историческим причинам диапазон U + FDD0..U + FDEF содержится в блоке арабских форм представления-A, но эти нехарактеры не являются «арабскими нехарактерами» или «справа налево»noncharacters "и не отличаются каким-либо иным образом от других noncharacters, за исключением значений их кодовых точек

U+FEFF - это спецификация, а U+FFFE - ее замененная байтами версия.Но так как U+FFFE не является символом, когда процесс интерпретации находит U + FFFE в качестве первого символа, он сигнализирует либо о том, что процесс столкнулся с текстом, который имеет неправильный порядок байтов, либо о том, что файл не является допустимым текстом Unicode, он простодает сигнал, не стандартным способом.Это может быть либо один, либо обратный байт, либо неправильный текст.

В разделе Unicode 3.2 предложение C2 говорит

C2 Процесс не должен интерпретировать кодовую точку нехарактера как абстрактный символ.

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

Так что, как разработчики приложений, вы можете использовать эти символы по своему желанию.Они используются в качестве часового или разделителя или могут быть символами baslik, но их нельзя взаимозаменять.

Раздел 16.7 говорит

В сущности, нехарактеры могутсчитаться внутренним частным кодом кода приложения.В отличие от символов частного использования, описанных в Разделе 16.5, Символы частного использования, которым назначены символы и которые предназначены для использования в открытом обмене, при условии интерпретации по частному соглашению, нехарактерные символы зарезервированы (не назначены) на постоянной основе и не имеют никакой интерпретации внеиз их возможного частного использования внутри приложения

Опять U + FFFF не зарезервирован в качестве сторожевого устройства по стандарту Unicode, а только с учетом типичного варианта использования.Читайте в разделе 16.7

U + FFFF и U + 10FFFF. Эти две нехарактерные кодовые точки имеют атрибут, связанный с самыми большими значениями кодовой единицыдля определенных форм кодирования Unicode.В UTF-16 U + FFFF ассоциируется с наибольшим значением 16-битной кодовой единицы, FFFF 16 U + 10FFFF ассоциируется с наибольшим допустимым значением 32-битной кодовой единицы UTF-32, 10FFFF 16 Этот атрибут делает эти две нехарактерные кодовые точки полезными для внутренних целей в качестве стражей.Например, они могут использоваться для указания конца списка, для представления значения в индексе, которое гарантированно будет выше, чем любое допустимое символьное значение, и т. Д.

9 голосов
/ 05 декабря 2012

Как уже упоминалось здесь, в xkcd , U+FDD0 на самом деле является символом Unicode для глаза василиска. По (очевидным) причинам личной безопасности персонаж не отображается на экране ...:)

...