UTF-32 Содержание История | Использование | Неиспользование...

ДКОИ-8


ЮникодКомпьютерные кодировки


англ.UCS-4англ.информатикеспособов кодированияЮникодаCode pointASCIIдиакритического знакакрючок над буквойсоставными символамиангл.ISOAPIглифомUnixwchar_tPythonWindowsHTML5




UTF-32 (англ. Unicode Transformation Format) или UCS-4 (универсальный набор символов, англ. Universal Character Set) в информатике — один из способов кодирования символов Юникода, использующий для кодирования любого символа ровно 32 бита. Остальные кодировки, UTF-8 и UTF-16, используют для представления символов переменное число байтов. Символ UTF-32 является прямым представлением его кодовой позиции (Code point (англ.)).


Главное преимущество UTF-32 перед кодировками переменной длины заключается в том, что символы Юникод непосредственно индексируемы. Получение n-ой кодовой позиции является операцией, занимающей одинаковое время. Напротив, коды с переменной длиной требует последовательного доступа к n-ой кодовой позиции. Это делает замену символов в строках UTF-32 простой, для этого используется целое число в качестве индекса, как обычно делается для строк ASCII.


Главный недостаток UTF-32 — это неэффективное использование пространства, так как для хранения символа используется четыре байта. Символы, лежащие за пределами нулевой (базовой) плоскости кодового пространства, редко используются в большинстве текстов. Поэтому удвоение, в сравнении с UTF-16, занимаемого строками в UTF-32 пространства, не оправдано.


Хотя использование неменяющегося числа байтов на символ удобно, но не настолько, как кажется. Операция усечения строк реализуется легче в сравнении с UTF-8 и UTF-16. Но это не делает более быстрым нахождение конкретного смещения в строке, так как смещение может вычисляться и для кодировок фиксированного размера. Это не облегчает вычисление отображаемой ширины строки, за исключением ограниченного числа случаев, так как даже символ «фиксированной ширины» может быть получен комбинированием обычного символа с модифицирующим, который не имеет ширины. Например, буква «й» может быть получена из буквы «и» и диакритического знака «крючок над буквой». Сочетание таких знаков означает, что текстовые редакторы не могут рассматривать 32-битный код как единицу редактирования. Редакторы, которые ограничиваются работой с языками с письмом слева направо и составными символами (англ. Precomposed character), могут использовать символы фиксированного размера. Но такие редакторы вряд ли поддержат символы, лежащие за пределами нулевой (базовой) плоскости кодового пространства и вряд ли смогут работать одинаково хорошо с символами UTF-16.




Содержание






  • 1 История


  • 2 Использование


  • 3 Неиспользование UTF-32 в HTML5


  • 4 Ссылки





История |


Стандарт ISO 10646 определяет 31-битную форму кодировки, названную UCS-4, в которой каждый закодированный символ представлен 32-разрядным значением кода в кодовом пространстве чисел от 0 до 7FFFFFFF.


Поскольку на самом деле используются только 17 плоскостей, то коды всех символов имеют значения от 0 до 0x10FFFF. UTF-32 — это подмножество UCS-4, которое использует только этот диапазон. Так как документ JTC1/SC2/WG2 устанавливает, что все будущие назначения символов будут ограничены нулевой (базовой) плоскостью кодового пространства или первыми 14 дополнительными плоскостями, то UTF-32 сможет представить все символы Юникода. Соответственно, UCS-4 и UTF-32 идентичны в настоящее время, за исключением того, что у стандарта UTF-32 есть дополнительная семантика Юникода.



Использование |


UTF-32 применяется, главным образом, не в строках символов, а во внутренних API, где данные являются единственной кодовой позицией или глифом. Например, при прорисовке текста на последнем шаге происходит построение списка структур, каждая из которых включает в себя позиции x и у, атрибуты и единственный символ UTF-32, идентифицирующий глиф для прорисовки. Часто в «неиспользуемых» 11 битах каждого 32-битного символа хранится посторонняя информация.


UTF-32 используются для хранения строк в Unix в том случае, когда тип wchar_t определён как 32-битный.
Программы на Python версии по 3.2 включительно могли быть откомпилированы для использования UTF-32 вместо UTF-16. С версии 3.3 поддержка UTF-16 была удалена, и строки хранятся в UTF-32, но лидирующие нули оптимизируются в случае их неиспользования.
В ОС Windows, в которой тип wchar_t имеет размер 16 бит, строки UTF-32 почти не используются.



Неиспользование UTF-32 в HTML5 |


Стандарт HTML5 гласит, что «авторы не должны использовать UTF-32, поскольку алгоритмы определения кодировки, описанные в данной спецификации, не отличают его от UTF-16».



Ссылки |



  • Полное описание стандарта Unicode  (англ.)








Popular posts from this blog

Щит и меч (фильм) Содержание Названия серий | Сюжет |...

is 'sed' thread safeWhat should someone know about using Python scripts in the shell?Nexenta bash script uses...

Meter-Bus Содержание Параметры шины | Стандартизация |...