Почему при кодировании текстовой информации на компьютере в большинстве кодировок используется кодировка 256

Обновлено: 01.07.2024

ASCII и UTF-8 – две современные системы кодирования текста. И то, и другое объясняется в этом видео с участием Кейтлин Мерри.

В 1963 году был принят Американский стандартный код для обмена информацией, или ASCII, чтобы информацию можно было переводить между компьютерами. Он был разработан для создания международного стандарта кодирования латинского алфавита; превращая двоичные числа в текст на экране вашего компьютера. ASCII кодирует символы в семь битов двоичных данных. Поскольку каждый бит может быть либо 1, либо 0, всего получается 128 возможных комбинаций. Каждое из этих двоичных чисел можно преобразовать в десятичное число от 0 до 127. Например, 1000001 в двоичном формате равняется 65 в десятом. В ASCII каждое десятичное число соответствует символу, который мы хотим закодировать. От прописных и строчных букв до цифр, символов и компьютерных команд.

Ошибки в преобразовании японских иероглифов стали такой проблемой, что у них даже есть название для этого — модзибаке. Эта проблема стала намного хуже с изобретением всемирной паутины. Для решения проблем, связанных с отправкой документов на разных языках по всему миру, был создан консорциум для создания всемирного стандарта Unicode. Как и в ASCII, в Unicode каждому символу присваивается определенный номер. Unicode также использует старую кодировку ASCII для английского языка. Таким образом, A в верхнем регистре по-прежнему равен 65. Но Unicode кодирует гораздо больше, чем 100 000 символов в большинстве языков. Для этого он использует не 8 бит данных, а 32. Но 65, закодированные в 32 бита, выглядят так, что занимает много места.

Кроме того, многие старые компьютеры интерпретируют восемь нулей подряд как конец строки символов, также называемый нулем. Это означает, что они не будут отправлять никаких символов, которые появятся позже. Метод кодирования Unicode, UTF8, решает эти проблемы. Вплоть до номера 127 значение ASCII остается неизменным. Так что A по-прежнему 01000001. Для всего, что выше 127, UTF8 разделяет код на два байта. Он добавляет 110 к первому байту и 10 ко второму байту. Затем вы просто заполняете двоичный код для промежуточных битов. Например, число 325 равно 00101000101, которое вставляется вот так. Это работает для первых 4096 символов. После этого добавляется еще один байт.

Поделиться этой публикацией

Два стандарта кодирования символов определяют, как символы декодируются из единиц и нулей в текст, который вы видите на экране прямо сейчас, и в различные языки, просматриваемые каждый день во всемирной паутине. Этими двумя стандартами кодирования являются ASCII и Unicode.

ASCII

Американский стандартный код для обмена информацией (ASCII) был разработан для создания международного стандарта кодирования латинского алфавита. В 1963 году был принят ASCII, чтобы информацию можно было интерпретировать между компьютерами; представляющие строчные и заглавные буквы, цифры, символы и некоторые команды. Поскольку ASCII кодируется с использованием единиц и нулей, системы счисления с основанием 2, он использует семь битов. Семь бит позволяют 2 в степени 7 = 128 возможных комбинаций цифр для кодирования символа.

Поэтому ASCII гарантирует, что можно закодировать 128 важных символов:

Хотите продолжать
учиться?

Представление данных в вычислениях: оживление данных

Как работает кодировка ASCII

  • Вы уже знаете, как преобразовывать десятичные числа в двоичные.
  • Теперь вам нужно преобразовать буквы в двоичные числа.
  • Каждому символу соответствует десятичное число (например, A → 65).
  • ASCII использует 7 бит.
  • Мы используем первые 7 столбцов таблицы преобразования, чтобы создать 128 различных чисел (от 0 до 127)

Например, 1000001 дает нам число 65 ( 64 + 1 ), что соответствует букве «А».

Вот как «HELLO» закодировано в ASCII в двоичном формате:

< /tr> < /tbody>
Латинские символы ASCII
H 1001000< /td>
E 1000101
L 1001100
L 1001100
O 1001111

Давайте применим эту теорию на практике:

  1. Откройте Блокнот или любой другой текстовый редактор.
  2. Введите сообщение и сохраните его, например. "данные прекрасны"
  3. Посмотрите на размер файла — у меня 18 байт
  4. Теперь добавьте еще одно слово, например "данные такие красивые"
  5. Если вы еще раз посмотрите на размер файла, вы увидите, что он изменился — теперь мой файл стал на 3 байта больше (SO[ПРОБЕЛ]: «S», «O» и пробел)

Юникод и UTF-8

Проблема несовместимых систем кодирования стала более актуальной с изобретением Всемирной паутины, поскольку люди обменивались цифровыми документами по всему миру, используя несколько языков. Для решения этой проблемы Консорциум Unicode создал универсальную систему кодирования под названием Unicode.Юникод кодирует более 100 000 символов, охватывая все символы, которые вы найдете в большинстве языков. Unicode присваивает каждому символу определенное число, а не двоичную цифру. Но с этим были некоторые проблемы, например:

  1. Для кодирования 100 000 символов потребуется около 32 двоичных разрядов. Unicode использует ASCII для английского языка, поэтому A по-прежнему равно 65. Однако при 32-битной кодировке буква A будет двоичным представлением 0000000000000000000000000000000000001000001. Это тратит много драгоценного места!
  2. Многие старые компьютеры интерпретируют восемь нулей подряд (ноль) как конец строки символов. Таким образом, эти компьютеры не будут отправлять символы, следующие за восемью нулями подряд (они не будут отправлять букву A, если она представлена ​​как 0000000000000000000000000000000000001000001).

Метод кодирования Unicode UTF-8 решает следующие проблемы:
– До символа с номером 128 используется обычное значение ASCII (так, например, A равно 01000001)
– Для любого символа после 128, UTF-8 разделяет код на два байта и добавляет «110» к началу первого байта, чтобы показать, что это начальный байт, и «10» к началу второго байта, чтобы показать, что он следует за первым байтом.

Итак, для каждого символа после числа 128 у вас есть два байта:

И вы просто вводите двоичное число между ними:

Это работает для первых 2048 символов. Для других символов в начале первого байта добавляется еще одна «1», а также используется третий байт:

Это дает вам 16 пробелов для двоичного кода. Таким образом, UTF-8 достигает четырех байтов:

Таким образом, UTF-8 позволяет избежать проблем, упомянутых выше, а также необходимости в индексе, и позволяет вам декодировать символы из двоичной формы в обратном порядке (т. е. он обратно совместим).

Занятия в классе

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

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

Двоичные браслеты: создавайте браслеты, используя разноцветные бусины для обозначения единиц и нулей и написания инициала или имени в ASCII.

Один бит может иметь 2 возможных состояния. 2 1 =2. 0 или 1.
Два бита могут иметь 4 возможных состояния. 2 2 =4. 00,01,10,11. (т.е. 0-3)
Четыре бита могут иметь 16 возможных состояний. 2 4 =16. 0000,0001,0010,0011 и т. д. (т.е. 0-15)
Семь битов могут иметь 128 возможных состояний. 2 7 =128. 0000000,0000001,0000010 и т. д. (т.е. 0-127).
Восемь битов могут иметь 256 возможных состояний. 2 8 =256. 00000000,00000001,00000010 и т. д. (например, 0–255).

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

Общий код, используемый для символов с диакритическими знаками, — Quoted-Printable. Любые расширенные символы (больше 127) кодируются строкой из трех символов. Например, é = E9. 8BIT (по сути, несжатые символьные данные) также является допустимым кодом MIME и сегодня является наиболее распространенным способом отправки символов с диакритическими знаками.

Чтобы код работал на двух разных машинах с разными операционными системами и разными встроенными наборами символов, мы все должны согласовать стандартные наборы символов, в которые мы будем переводить. Международная организация по стандартизации (ISO) установила такие стандарты. Например, стандартный набор символов для западноевропейских языков — ISO-LATIN-I (или ISO-8859-1). Но пока компьютер знает, какой набор символов используется, его можно запрограммировать на перевод и отображение этих символов, независимо от того, какой у компьютера собственный набор символов. é — это 130-й символ в ISO-LATIN-I.

Программа электронной почты, совместимая с MIME, будет использовать заголовки электронной почты, чтобы отслеживать, какой набор символов и схема кодирования применяются к каждому сообщению электронной почты. Веб-браузер сделает то же самое. Это позволяет программе преобразовывать и знать, как отображать символы на любом заданном компьютере, поэтому вся система кодирования прозрачна (пользователь не замечает) для пользователя. Для MIME Quoted-Printable на западноевропейских языках эти заголовки могут выглядеть так:

    X-Mailer: QUALCOMM Windows Eudora версии 5.1
    Mime-версия: 1.0
    Тип контента: текстовый/обычный; charset=iso-8859-1
    Content-transfer-encoding: quoted-printable

И эти же заголовки MIME также используются на веб-страницах, чтобы веб-браузер, такой как Internet Explorer, Chrome или Firefox, знал, как отображать каждую страницу, независимо от того, где она была создана и где находится. просмотрено.Пока компьютер знает, какой набор символов представлен, он знает, какие символы отображать.

Клавиатуры

Вы также должны в первую очередь ввести символы в компьютер. Windows и Mac уже давно позволяют делать это с помощью сочетаний клавиш. Лучший способ ввода символов в Windows — это выбрать раскладку клавиатуры, которая включает символы, которые вы хотите ввести. Для ввода западноевропейских языков на американской клавиатуре самым безопасным и простым в использовании вариантом, если вы уже знаете, как печатать на американской клавиатуре, является международная клавиатура США. В Windows 7, 8, 10 найдите вкладку «Клавиатуры и языки» на панели управления «Регион и язык», чтобы изменить или добавить клавиатуру. Хотя многие программы могут иметь встроенные сочетания клавиш, преимущество использования клавиатуры в операционной системе (Windows, Mac) заключается в том, что она будет работать для всех программ.

Интерактивную справку по клавиатуре см.:

Справка по клавиатуре

Неанглийские клавиатуры Windows 7 ; Общие для Windows и Mac; Windows 10

Учебник по проблемам с кодами символов

Однако сегодня, работая с сетевыми протоколами и сетевым программированием, вы столкнетесь с множеством схем кодирования данных и символов.

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

Символы, целые числа, числа с плавающей точкой и т. д.

При хранении и передаче данных вам необходимо будет представлять следующие типы данных:

  • Символы и цифры, например A и 1
  • Длинные (32 бита) и короткие (16 бит) целые числа со знаком и без знака
  • Одинарное и двойное число с плавающей запятой
  • Логическое значение, т. е. True и False

Так как же компьютер запоминает букву А или цифру 1?

Как компьютер запоминает число вроде 60101? или 62.0101?

Как передать букву А и т. д. на другой компьютер по сети?

Компьютеры и кодировка символов

Чтобы сохранить текст в виде двоичных данных, необходимо указать кодировку для этого текста.

Компьютерные системы могут использовать различные схемы кодирования символов.

Пока данные остаются на компьютере, совершенно неважно, как они закодированы.

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

В 1968 году ASCII (Американский стандартный код для обмена информацией) был принят в качестве стандарта кодирования текста для обмена данными.

ASCII

ASCII – это американский стандарт, разработанный для кодирования английских символов и знаков препинания, которые использовались на пишущих машинках и телетайпах того времени (1960-е годы).

ASCII использует 8 бит, хотя на самом деле используется только 7 бит.

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

В таблице ниже представлены сводные данные о распределении кодов.

Таблица ASCII – сводка кодов

Расширения ASCII

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

Эти расширения сохранили набор символов ASCII и использовали неиспользуемую часть адресного пространства и управляющие коды для дополнительных символов.

Наиболее распространенными являются Windows 1252 и Latin-1 (ISO-8859).

Windows 1252 и 7-битная кодировка ASCII были наиболее широко используемыми схемами кодирования до 2008 года, когда UTF-8 стал наиболее распространенным.

ISO-8859-1,ISO-8859-15, Latin-1

ISO-8859 — это 8-битная кодировка символов, которая расширяет 7-битную схему кодирования ASCII и используется для кодирования большинства европейских языков. Подробнее см. вики.

ISO-8859-1, также известный как Latin-1, является наиболее широко используемым, поскольку его можно использовать для большинства распространенных европейских языков, например немецкого, итальянского, испанского, французского и т. д.

Она очень похожа на схему кодирования Windows-1252, но не идентична, см. Сравнение символов в Windows-1252, ISO-8859-1, ISO-8859-15

Юникод

В связи с необходимостью кодирования символов иностранных языков и других графических символов был разработан набор символов Unicode и схемы кодирования.

Самые распространенные схемы кодирования:

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

Это схема кодирования переменной ширины, разработанная для полной обратной совместимости с ASCII. Он использует от 1 до 4 байт. – вики

Наборы символов и схемы кодирования

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

Набор символов — это список символов, а схема кодирования — это то, как они представлены в двоичном формате.

Это лучше всего видно с Unicode.

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

ASCII – это набор символов и схема кодирования.

Знак порядка байтов (BOM)

Знак порядка байтов (BOM) — это символ Unicode, U+FEFF, который появляется как магическое число в начале текстового потока и может сигнализировать программе, потребляющей текст, о нескольких вещах: –Wiki

  • Порядок байтов или порядок следования байтов в текстовом потоке;
  • Тот факт, что кодировка текстового потока — Unicode, с высокой степенью достоверности;
  • Какой Unicode кодирует текстовый поток.

Спецификация различается для текста в кодировке UTF-8, UTF-16 и UTF-32

Следующая таблица, взятая из Wiki, показывает это.

bom-table- пример

Спецификации и текстовые редакторы

Как правило, большинство редакторов правильно обрабатывают спецификацию, и она не отображается.

Программное обеспечение Microsoft, такое как Блокнот, добавляет спецификацию при сохранении данных в кодировке UTF-8 и не может интерпретировать текст без спецификации, если он не является чистым ASCII.

Пример спецификации

Ниже показан вывод простой программы на Python, которая отображает содержимое файла, содержащего символы TEST (4 символа), сохраненные в виде ASCII, UTF-8, UTF-16-BE и UTF-16-LE

BOM-example

Распространенные вопросы и ответы

В. Как узнать, какую кодировку символов использует файл?

A- Обычно это не так, но некоторые текстовые редакторы, такие как notepad++, отображают кодировку. Если вы получили файл, закодированный с помощью кодировки, отличной от ожидаемой, вы можете получить сообщение об ошибке при попытке его чтения.

В. Мой файл в формате ASCII, но он нормально декодируется с помощью декодера UTF-8. Почему?

A- Потому что UTF-8 обратно совместим с ASCII.

Целые числа и числа с плавающей запятой — Big и Little Endian

Примечание. Поскольку в кодировках UTF-16 и UTF-32 используются 2-байтовые или 4-байтовые целые числа, к кодированию текста с их использованием применяется следующее

Количество байтов, выделенных для целого числа или числа с плавающей запятой, зависит от системы.

Пункт Tutorials описывает это для языка программирования C, и я буду использовать его для иллюстрации

Если мы возьмем короткое целое как 2 байта, а длинное целое как 4 байта.

Поскольку они используют несколько байтов, возникает несколько вопросов:

  • Какой байт представляет старшую часть числа?
  • При сохранении в памяти, какой байт сохраняется первым
  • При отправке по сети какой байт отправляется первым.

Окончание байтов относится к последовательному порядку, в котором байты упорядочиваются в более крупные числовые значения при сохранении в памяти или при передаче по цифровым каналам связи.
Окончание байтов представляет интерес в информатике, потому что два конфликтующих и несовместимых формата широко используются: слова могут быть представлены в формате с прямым порядком байтов или прямым порядком байтов, в зависимости от того, упорядочены ли биты, байты или другие компоненты от большого конец (самый значащий бит) или маленький конец (наименьший значащий бит).
В формате с обратным порядком байтов при адресации памяти или отправке/сохранении слов побайтно сохраняется старший значащий байт — байт, содержащий старший значащий бит. первый (имеет младший адрес) или отправляется первым, затем следующие байты сохраняются или отправляются в порядке убывания значимости, причем младший байт — тот, который содержит младший значащий бит — сохраняется последним (имеет самый высокий адрес) или отправляется последним.

Вики

int- Пример кодирования байтов

На приведенном ниже рисунке с использованием python показано целое число 16, представленное в виде 4 байтов, с использованием порядка байтов с прямым и обратным порядком байтов.

Сетевой порядок байтов и системный порядок байтов

Сетевой порядок байтов – это порядок расположения байтов при отправке данных по сети. ( TCP/IP обычно имеет формат Big Endian ).

Это означает, что старший байт отправляется первым.

Системный порядок байтов или порядок байтов хоста — это способ размещения байтов при сохранении в памяти хост-системы.

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

Правда в том, что даже такая простая вещь, как текст, требует хорошо скоординированной, четко определенной системы для отображения в веб-браузерах. В этом посте я объясню основы одной технологии, центральной для текста в Интернете, UTF-8. Мы изучим основы хранения и кодирования текста и обсудим, как это помогает размещать привлекательные слова на вашем сайте.

Прежде чем мы начнем, вы должны быть знакомы с основами HTML и готовы погрузиться в несложную компьютерную науку.

Что такое UTF-8?

UTF-8 расшифровывается как «Формат преобразования Unicode — 8 бит». Нам это пока не поможет, поэтому давайте вернемся к основам.

Двоичный файл: как компьютеры хранят информацию

Для хранения информации компьютеры используют двоичную систему. В двоичном формате все данные представлены в виде последовательностей 1 и 0. Основной единицей двоичного кода является бит, представляющий собой одну единицу или 0. Следующая по величине единица двоичного кода, байт, состоит из 8 бит. Пример байта: «01101011».

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

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

ASCII: преобразование символов в двоичные

Американский стандартный код для обмена информацией (ASCII) был ранней стандартизированной системой кодирования текста. Кодирование — это процесс преобразования символов человеческого языка в двоичные последовательности, которые могут обрабатываться компьютером.

Библиотека ASCII включает все прописные и строчные буквы латинского алфавита (A, B, C...), все цифры от 0 до 9 и некоторые распространенные символы (такие как /, ! и ?). Каждому из этих символов присваивается уникальный трехзначный код и уникальный байт.

В таблице ниже показаны примеры символов ASCII с соответствующими кодами и байтами.

Точно так же, как символы объединяются в слова и предложения в языке, двоичный код делает то же самое в текстовых файлах. Итак, предложение «Быстрая коричневая лиса перепрыгивает через ленивую собаку». представленный в двоичном формате ASCII, будет:

Это мало что значит для нас, людей, но для компьютера это хлеб с маслом.

Количество символов, которые может представлять ASCII, ограничено количеством доступных уникальных байтов, поскольку каждый символ получает один байт. Если вы посчитаете, то обнаружите, что существует 256 различных способов сгруппировать восемь единиц и нулей вместе. Это дает нам 256 различных байтов или 256 способов представления символа в ASCII. Когда в 1960 году была введена ASCII, это было нормально, поскольку разработчикам требовалось всего 128 байт для представления всех нужных им английских букв и символов.

Но по мере глобального распространения вычислительной техники компьютерные системы стали хранить текст на других языках, помимо английского, многие из которых использовали символы, отличные от ASCII. Были созданы новые системы для сопоставления других языков с одним и тем же набором из 256 уникальных байтов, но наличие нескольких систем кодирования было неэффективным и запутанным. Разработчикам требовался лучший способ кодирования всех возможных символов в одной системе.

Юникод: способ хранения всех символов

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

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

Ниже приведены некоторые примеры текстовых символов и соответствующие им кодовые точки. Каждая кодовая точка начинается с «U» для «Unicode», за которой следует уникальная строка символов для представления символа.

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

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

Однако Unicode сам по себе не хранит слова в двоичном формате. Компьютерам нужен способ перевода Unicode в двоичный код, чтобы его символы можно было хранить в текстовых файлах. Здесь на помощь приходит кодировка UTF-8.

UTF-8: последняя часть головоломки

UTF-8 – это система кодирования Unicode. Он может преобразовать любой символ Unicode в соответствующую уникальную двоичную строку, а также может преобразовать двоичную строку обратно в символ Unicode. В этом смысл «UTF» или «формата преобразования Unicode».

Помимо UTF-8, для Unicode существуют и другие системы кодирования, но UTF-8 уникальна, поскольку представляет символы в однобайтовых блоках. Помните, что один байт состоит из восьми битов, отсюда и «-8» в его имени.

В частности, UTF-8 преобразует кодовую точку (которая представляет один символ в Unicode) в набор от одного до четырех байтов. Первые 256 символов в библиотеке Unicode, включая символы, которые мы видели в ASCII, представлены как один байт. Символы, которые появляются позже в библиотеке Unicode, кодируются как двухбайтовые, трехбайтовые и, возможно, четырехбайтовые двоичные единицы.

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

Почему UTF-8 преобразовывает одни символы в один байт, а другие — в четыре байта? Короче, для экономии памяти. Используя меньше места для представления более распространенных символов (например, символов ASCII), UTF-8 уменьшает размер файла, позволяя использовать гораздо большее количество менее распространенных символов. Эти менее распространенные символы закодированы в два или более байта, но это нормально, если они хранятся экономно.

Пространственная эффективность — ключевое преимущество кодировки UTF-8. Если бы вместо этого каждый символ Unicode был представлен четырьмя байтами, текстовый файл, написанный на английском языке, был бы в четыре раза больше по размеру того же файла, закодированного с помощью UTF-8.

Еще одним преимуществом кодировки UTF-8 является ее обратная совместимость с ASCII. Первые 128 символов в библиотеке Unicode совпадают с символами в библиотеке ASCII, и UTF-8 переводит эти 128 символов Unicode в те же двоичные строки, что и ASCII. В результате UTF-8 может без проблем преобразовать текстовый файл, отформатированный в ASCII, в удобочитаемый текст.

Символы UTF-8 в веб-разработке

UTF-8 – это наиболее распространенный метод кодировки символов, используемый сегодня в Интернете, а также набор символов по умолчанию для HTML5. Более 95% всех веб-сайтов, включая ваш собственный, хранят символы таким образом. Кроме того, распространенные методы передачи данных через Интернет, такие как XML и JSON, кодируются в соответствии со стандартами UTF-8.

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

Текстовые файлы, закодированные с помощью UTF-8, должны указывать это программному обеспечению, которое их обрабатывает. В противном случае программное обеспечение не сможет правильно преобразовать двоичный файл обратно в символы. В файлах HTML вы можете увидеть строку кода, подобную следующей, вверху:

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

UTF-8 и UTF-16

Как я уже упоминал, UTF-8 — не единственный метод кодирования символов Unicode. Существует также UTF-16. Эти методы различаются количеством байтов, необходимых для хранения символа. UTF-8 кодирует символ в двоичную строку из одного, двух, трех или четырех байтов. UTF-16 кодирует символ Юникода в строку из двух или четырех байтов.

Это различие очевидно из их имен. В UTF-8 наименьшее двоичное представление символа составляет один байт или восемь бит. В UTF-16 наименьшее двоичное представление символа составляет два байта или шестнадцать бит.

И UTF-8, и UTF-16 могут преобразовывать символы Unicode в двоичные файлы, удобные для компьютера, и обратно. Однако они не совместимы друг с другом. Эти системы используют разные алгоритмы для преобразования кодовых точек в двоичные строки, поэтому двоичный вывод для любого заданного символа будет выглядеть по-разному при использовании обоих методов:

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

UTF-16 эффективнее, чем UTF-8, только на некоторых веб-сайтах, отличных от английского. Если веб-сайт использует язык с более ранними символами в библиотеке Unicode, UTF-8 будет кодировать все символы как четыре байта, тогда как UTF-16 может кодировать многие из тех же символов только как два байта. Тем не менее, если ваши страницы заполнены буквами ABC и 123, придерживайтесь UTF-8.

Расшифровка мира кодировки UTF-8

Это было много слов о словах, так что давайте подытожим то, что мы рассмотрели:

  1. Компьютеры хранят данные, включая текстовые символы, в двоичном формате (1 и 0).
  2. ASCII был одним из первых способов кодирования или преобразования символов в двоичный код, чтобы компьютеры могли их хранить. Однако в ASCII недостаточно места для представления нелатинских символов и чисел в двоичном формате.
  3. Решением этой проблемы стал Unicode. Unicode присваивает уникальный «код» каждому символу в любом человеческом языке.
  4. UTF-8 — это метод кодировки символов Unicode.Это означает, что UTF-8 берет кодовую точку для данного символа Unicode и переводит ее в двоичную строку. Он также делает обратное, читая двоичные цифры и преобразовывая их обратно в символы.
  5. В настоящее время UTF-8 является самым популярным методом кодирования в Интернете, поскольку он может эффективно хранить текст, содержащий любой символ.
  6. UTF-16 — это еще один метод кодирования, но он менее эффективен для хранения текстовых файлов (за исключением тех, которые написаны на некоторых языках, отличных от английского).

Перевод Unicode — это не то, о чем большинству из нас нужно думать при просмотре или разработке веб-сайтов, и именно в этом суть — создать единую систему обработки текста, которая работает для всех языков и веб-браузеров. Если он работает хорошо, вы этого не заметите.

Но если вы обнаружите, что страницы вашего веб-сайта занимают слишком много места или если ваш текст замусорен символами ▢s и �s, пришло время применить ваши новые знания UTF-8 на практике.

Читайте также: