WikiSort.ru - Не сортированное

ПОИСК ПО САЙТУ | о проекте

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.

История

Стандарт 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».

Ссылки

Кодировки символов
Основы алфавиттекст (файлданные) • набор символовконверсия
Исторические кодировки Докомп.: семафорная (Макарова)МорзеБодоМТК-2
Комп.: 6-битнаяУППRADIX-50EBCDIC (ДКОИ-8) • КОИ-7ISO 646
современное
8-битное
представление
символы ASCII (управляющиепечатные) • не-ASCII (псевдографика)
8-битные код.стр. Кириллица: КОИ-8Основная кодировкаMacCyrillic
ISO 8859 1 (лат.)2345 (кир.)6789101112131415 (€)16
Windows 12501251 (кир.)1252125312541255125612571258WGL4
IBM & DOS 437850852855866 «альт.»МИК
Многобайтные Традиционные DBCS (GB2312) • HTML
Unicode UTF-32UTF-16UTF-8список символов (кириллица)
Связанные темы интерфейс пользователяраскладка клавиатурылокальперевод строкишрифттранслитнестандартные шрифты
Утилиты iconvrecode

Данная страница на сайте WikiSort.ru содержит текст со страницы сайта "Википедия".

Если Вы хотите её отредактировать, то можете сделать это на странице редактирования в Википедии.

Если сделанные Вами правки не будут кем-нибудь удалены, то через несколько дней они появятся на сайте WikiSort.ru .




Текст в блоке "Читать" взят с сайта "Википедия" и доступен по лицензии Creative Commons Attribution-ShareAlike; в отдельных случаях могут действовать дополнительные условия.

Другой контент может иметь иную лицензию. Перед использованием материалов сайта WikiSort.ru внимательно изучите правила лицензирования конкретных элементов наполнения сайта.

2019-2024
WikiSort.ru - проект по пересортировке и дополнению контента Википедии