Поделиться через


Юникод

Юникод является стандартом кодировки символов по всему миру. Система использует Юникод исключительно для обработки символов и строк. Подробное описание всех аспектов Юникода см. в стандартной версии Юникода.

По сравнению с более старыми механизмами обработки символов и строковых данных Юникод упрощает локализацию программного обеспечения и улучшает многоязычную обработку текста. С помощью Юникода для представления символьных и строковых данных в приложениях можно включить универсальные возможности обмена данными для глобального маркетинга, используя один двоичный файл для каждого возможного кода символов. Юникод выполняет следующие действия:

  • Позволяет любому сочетанию символов, рисуемых из любого сочетания скриптов и языков, совместно существовать в одном документе.
  • Определяет семантику для каждого символа.
  • Стандартизирует поведение скрипта.
  • Предоставляет стандартный алгоритм двунаправленного текста.
  • Определяет перекрестные сопоставления с другими стандартами.
  • Определяет несколько кодировок одного набора символов: UTF-7, UTF-8, UTF-16 и UTF-32. Преобразование данных между этими кодировками без потери.

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

Функции с поддержкой Юникода описаны в соглашениях о прототипах функций. Эти функции используют кодировку UTF-16 (широкий символ), которая является наиболее распространенной кодировкой Юникода и используется для кодирования в собственных юникодах в операционных системах Windows. Каждое значение кода составляет 16 битов, в отличие от более старой кодовой страницы подход к символьным и строковым данным, использующим 8-разрядные значения кода. Использование 16 бит позволяет напрямую кодирование 65 536 символов. На самом деле, вселенная символов, используемых для транскрибирования человеческих языков, даже больше, чем это, и точки кода U+D800 в диапазоне U+D800 по U+DFFF используются для формирования суррогатных пар, которые составляют 32-разрядные кодировки дополнительных символов. Дополнительные сведения см. в суррогатах и дополнительных символах.

Набор символов Юникода включает в себя множество символов, таких как U+0308 ("fx"), объединение dieresis или umlaut. Юникод часто может представлять один и тот же глиф в форме "составной" или "разложенной" формы: например, составная форма "Ä" является единственной точкой кода Юникода "Ä" (U+00C4), а его разложенная форма — "A" + "" (U+0041 U+0308). Юникод не определяет составную форму для каждого глифа. Например, вьетнамский нижний регистр "o" с обрезанием и тильдой ("ỗ") представлен U+006f U+0302 U+0303 (o + Circumflex + Tilde). Дополнительные сведения об объединении символов и связанных проблем см. в разделе Использование нормализации Юникода для представления строк.

Для совместимости с 8-разрядными и 7-разрядными средами Юникод также может быть закодирован как UTF-8 и UTF-7 соответственно. Хотя функции с поддержкой Юникода в Windows используют UTF-16, также можно работать с данными, закодированными в UTF-8 или UTF-7, которые поддерживаются в Windows как многобайтовый набор символов кодовых страницах.

Новые приложения Windows должны использовать UTF-16 в качестве внутреннего представления данных. Windows также обеспечивает обширную поддержку кодовой страницы, а смешанное использование в одном приложении возможно. Даже новые приложения на основе Юникода иногда должны работать с кодовыми страницами. Причины этого рассматриваются в кодовой страницы.

Приложение может использовать функции MultiByteToWideChar и WideCharToMultiByte для преобразования между строками на основе кодовых страниц и строк Юникода. Хотя их имена относятся к MultiByte, эти функции работают одинаково хорошо с однобайтового набора символов (SBCS), двухбайтового набора символов (DBCS) и многобайтовых кодовых страниц (MBCS).

Как правило, приложение Windows должно использовать UTF-16 внутренне, преобразуя только в составе "тонкого слоя" через интерфейс, который должен использовать другой формат. Этот метод защищает от потери и повреждения данных. Каждая кодовая страница поддерживает разные символы, но ни одна из них не поддерживает полный спектр символов, предоставляемых Юникодом. Большинство кодовых страниц поддерживают разные подмножества, в кодировке по-разному. Кодовые страницы для UTF-8 и UTF-7 являются исключением, так как они поддерживают полный набор символов Юникода, а преобразование между этими кодировками и UTF-16 не является потерей.

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

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

При модернизации устаревших приложений на основе кодовой страницы для использования Юникода можно использовать универсальные функции и макрос TEXT для поддержания единого набора источников, из которых необходимо скомпилировать две версии приложения. Одна версия поддерживает Юникод, а другая — с кодовыми страницами Windows. С помощью этого механизма можно преобразовать даже очень крупные приложения из кодовых страниц Windows в Юникод, сохраняя источники приложений, которые можно скомпилировать, создавать и тестировать на всех этапах преобразования. Дополнительные сведения см. в соглашениях о прототипах функций.

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

наборы символов

Сортировка

суррогатов и дополнительных символов

использование нормализации Юникода для представления строк