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

Случалось ли вам когда-нибудь посещать новую страну или штат и не понимать языка, на котором говорят там люди? Должно быть, они говорят на каком-то другом языке, о котором вы не знали. На математическом уровне вы не можете придумать в уме шаблоны или некоторые правила, которые могли бы понимать их слова, то же самое касается письма. У нас нет никаких карт для распознавания этих иностранных символов, слов, языка и т. Д. Однако это основная причина большинства проблем, с которыми мы сталкиваемся, связанных с кодировкой символов. Если сервер, компьютер или приложение не могут понять или прочитать символы (вы могли видеть '???????' в некоторых электронных письмах, текстовом файле или квадратном поле, подобном этому ₹ вместо индийской валюты), это означает, что там нет отображения и правил. Просто предоставление набора правил и сопоставления может решить проблему. Следовательно, это определение кодировки.

В компьютерах кодирование - это процесс помещения последовательности символов (букв, цифр, знаков препинания и некоторых символов) в специальный формат для эффективной передачи или хранения.

Кодировка - это набор правил для преобразования чего-либо из одного представления в другое.

Поскольку компьютеры могут читать и понимать только биты (0 и 1), сохраняя алфавиты, числа, символы и символы , изображения, видео и т. д. были проблемой до тех пор, пока ASCII (американский стандартный код для обмена информацией, произносится как ASK-ee), не был разработан 7-битной кодировкой, которая обеспечивала отображение алфавитов, чисел и символов с последовательностью битов. Используя 7 бит, ASCII может использоваться для хранения 128 возможных символов (от 0000000 до 1111111), которые включают латинские буквы, а также каждую цифровую цифру, общие знаки препинания, пробелы, табуляции и другие управляющие символы.

Микропроцессоры 1970-х предпочитали работать со степенью 2. Они могли обрабатывать 8 бит за раз и поэтому использовали 8 бит (также называемых байтом или октетом) для хранения каждого символа, давая 256 возможных значений. Поскольку ASCII присваивает значение от 0 до 127, оставшиеся 128 значений были запасными, и, таким образом, страны и организации начали использовать оставшиеся значения в соответствии со своими требованиями без каких-либо стандартов.

ISO пришла со стандартизацией в 1990-х годах и предоставила 15 различных 8-битных наборов символов для охвата множества разных алфавитов, таких как кириллица, арабский, иврит, турецкий и тайский. Они называются ISO-8859–1 до ISO-8859–16 (от номера 12 отказались).

В любом случае, как насчет языков, в которых присутствует более 256 символов? Однобайтового (8-битного) кодирования было недостаточно, поэтому было введено многобайтовое кодирование. Вместо 8-битных были введены 16- или 32-битные схемы кодирования. Следить за такими разными кодировками в разных организациях и странах становилось своего рода беспорядком.

Наконец, чтобы прояснить этот беспорядок, был создан один стандарт кодирования для унификации всех стандартов кодирования под названием Unicode. Он в основном определяет большую таблицу из 1114 112 кодовых точек (символ отображается в последовательность битов), которая может использоваться для любых букв и символов в любой стране мира. Вы можете написать документ на любом языке, используя любой символ, который вы можете ввести на компьютере, просто используя Unicode.

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

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

Unicode можно назвать библией, содержащей отображение всех символов с последовательностью битов. Юникод - это не схема кодирования, поскольку количество битов, необходимых для хранения / передачи / использования любого символа, в Юникоде не определено. Вместо этого были разработаны различные другие схемы кодирования с использованием Unicode, который определяет количество битов, необходимых для хранения набора символов.

2 байта (16 бит) недостаточно для представления 1,114,112 различных значений. Следовательно, потребуется 4 байта, чтобы покрыть все кодовые точки в Unicode (3 байта в компьютерных науках неудобны), и, следовательно, были введены схемы кодирования UTF- *, которые могут кодировать все кодовые точки Unicode с использованием 32 бит, то есть 4 байта на символ. . Но это может занимать много места, поэтому кодировки UTF-8 и UTF-16 были введены вместе с UTF-32.

CharacterEncodingBitsAUTF-801000001AUTF-1600000000 01000001AUTF-3200000000 00000000 00000000 01000001 あ UTF-811100011 10000001 10000010 あ UTF-1600110000 01000010 あ UTF-3200000000 00000000 00110000 01000010

Кодовые точки Unicode записываются в шестнадцатеричном формате (чтобы числа были короче), перед ними стоит «U +» (U, чтобы другие знали его Unicode). Символ Ḁ имеет кодовую точку Unicode U + 1E00. Другими (десятичными) словами, это 7680-й символ таблицы Unicode. Официально он называется «ЛАТИНСКАЯ ЗАГЛАВНАЯ БУКВА А С КОЛЬЦОМ НИЖЕ».

Почему UTF-8 так популярен?

Если браузеры могут легко работать с Unicode в 32-битных символах, в чем проблема? Проблема заключается в отправке и получении, чтении и записи символов. Проблема остается, потому что:

  1. Множество существующего программного обеспечения и протоколов отправляют / получают и читают / записывают 8-битные символы
  2. Использование 32 бита для отправки / хранения английского текста в четыре раза увеличит требуемую полосу пропускания / пространство.

Нет проблем с браузерами для работы с Unicode, но есть веб-серверы, текстовые редакторы, мобильные и веб-фреймворки, системы баз данных, для которых требуется стандартизация схемы кодирования, и, следовательно, все еще нужен способ сделать 1114 112 кодовых точек Unicode, подходящими для всего 8 бит. Следовательно, UTF-8 (8-битный формат преобразования универсального набора символов) с его многобайтовым кодированием переменной ширины решил вышеуказанные проблемы.

UTF-8 поддерживает практически все символы на всех языках, о которых вы только можете подумать. Это очень важно для Интернета. Это упрощает управление многоязычными сайтами, поскольку вам не нужно беспокоиться о каких-либо локализованных наборах символов для каждого языка.

Подавляющее большинство часто используемых символов представляются всего двумя байтами в области, называемой Базовая многоязычная плоскость (BMP).

  • UTF-8:
  • 1 байт: стандартный ASCII
  • 2 байта: арабский, иврит, большинство европейских шрифтов (в первую очередь, за исключением грузинского)
  • 3 байта: BMP
  • 4 байта: все символы Unicode
  • UTF-16:
  • 2 байта: BMP
  • 4 байта: все символы Unicode

Как поясняется в статье SmashingMagazine,

UTF-8 работает как клавиша Shift на клавиатуре. Обычно, когда вы нажимаете H на клавиатуре, на экране появляется строчная буква «h». Но если вы сначала нажмете Shift, появится заглавная буква H.

UTF-8 обрабатывает числа 0–127 как ASCII, 192–247 как клавиши Shift и 128–192 как клавиши для смещения. Например, символы 208 и 209 переводят вас в диапазон кириллицы. 208, за которым следует 175 - это символ 1071, кириллица Я. Точный расчет: (208% 32) * 64 + (175% 64) = 1071. Символы 224–239 подобны двойному сдвигу. 226, за которым следует 190, а затем 128 - это символ 12160: ⾀. 240 и старше - тройная смена.

Многобайтовый, потому что для определения одного символа, такого как Я, требуется более одного байта. Переменная ширина, потому что некоторые символы, такие как H, занимают всего 1 байт, а некоторые - до 4. Следовательно, многобайтовая кодировка переменной ширины.

Однако число 8 в UTF-8 означает, что символы в UTF-8 кодируются блоками по 8 и, следовательно, размер символов в UTF-8 варьируется от 8 до 32 бит.

Итак, как правильно обращаться с кодировками?

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

Щелкните здесь, чтобы узнать о различных кодировках символов, которые существуют до сих пор.

использованная литература