Объяснение кодировки символов Unicode

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

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

Кодировка символов

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

Например, я мог бы сказать, что письмо становится числом 13, a = 14, 1 = 33, # = 123 и так далее.

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

Что такое юникод?

instagram viewer

ASCII (американский стандартный код для обмена информацией) стала первой широко распространенной схемой кодирования. Тем не менее, он ограничен только 128 определениями символов. Это хорошо для наиболее распространенных английских символов, цифр и знаков препинания, но немного ограничивает остальной мир.

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

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

Стало очевидным, что необходима новая схема кодировки символов, когда был создан стандарт Unicode. Цель Unicode - объединить все различные схемы кодирования, чтобы путаница между компьютерами была максимально ограничена.

В настоящее время стандарт Unicode определяет значения для более чем 128 000 символов и можно увидеть на Консорциум Юникод. Он имеет несколько форм кодировки символов:

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

Замечания: UTF означает Unicode Transformation Unit.

Кодовые точки

Кодовая точка - это значение, которое символ задается в стандарте Unicode. Значения в соответствии с Unicode записываются в виде шестнадцатеричных чисел и имеют префикс U +.

Например, чтобы закодировать символы, которые мы рассмотрели ранее:

  • это U + 0041
  • это U + 0061
  • 1 это U + 0031
  • # это U + 0023

Эти кодовые точки разбиты на 17 различных секций, называемых плоскостями, обозначенными номерами от 0 до 16. Каждый самолет содержит 65 536 кодовых точек. Первая плоскость, 0, содержит наиболее часто используемые символы и называется базовой многоязычной плоскостью (BMP).

Кодовые единицы

Схемы кодирования состоят из кодовых единиц, которые используются для предоставления индекса того, где символ расположен на плоскости.

Рассмотрим UTF-16 в качестве примера. Каждое 16-битное число является кодовой единицей. Кодовые единицы могут быть преобразованы в кодовые точки. Например, символ плоской ноты ♭ имеет кодовую точку U + 1D160 и живет во второй плоскости стандарта Unicode (дополнительная идеографическая плоскость). Он будет закодирован с использованием комбинации 16-битных кодовых единиц U + D834 и U + DD60.

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

Как Java использует Unicode?

Джава был создан в то время, когда стандарт Unicode имел значения, определенные для гораздо меньшего набора символов. В то время считалось, что 16-разрядных будет более чем достаточно для кодирования всех символов, которые когда-либо понадобятся. Имея это в виду, Java была разработана для использования UTF-16. Тип данных char изначально использовался для представления 16-битной кодовой точки Unicode.

Начиная с Java SE v5.0, char представляет кодовую единицу. Это не имеет большого значения для представления символов, находящихся в базовой многоязычной плоскости, поскольку значение единицы кода совпадает с точкой кода. Однако это означает, что для персонажей на других плоскостях необходимы два символа.

Важно помнить, что один тип данных char больше не может представлять все символы Unicode.

instagram story viewer