Какой код кодирует всю информацию в компьютере

Обновлено: 21.11.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.

Раздел 404 Закона Сарбейнса-Оксли (SOX) требует, чтобы все публичные компании установили внутренний контроль и процедуры.

Закон о защите конфиденциальности детей в Интернете от 1998 года (COPPA) – это федеральный закон, который налагает особые требования на операторов доменов .

План North American Electric Reliability Corporation по защите критически важной инфраструктуры (NERC CIP) представляет собой набор стандартов.

Стандарт безопасности данных платежных приложений (PA-DSS) – это набор требований, призванных помочь поставщикам программного обеспечения в разработке безопасных .

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

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

Медицинская транскрипция (МТ) – это ручная обработка голосовых сообщений, продиктованных врачами и другими медицинскими работниками.

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

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

Снижение рисков – это стратегия подготовки к угрозам, с которыми сталкивается бизнес, и уменьшения их последствий.

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

Синхронная репликация — это процесс копирования данных по сети хранения, локальной или глобальной сети, поэтому .

Коэффициент усиления записи (WAF) – это числовое значение, представляющее объем данных, передаваемых контроллером твердотельного накопителя (SSD) .

API облачного хранилища — это интерфейс прикладного программирования, который соединяет локальное приложение с облачным хранилищем.

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

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

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

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

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

  • Символы и цифры, например 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, показывает это.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Вики

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

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

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

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

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

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

Что такое кодировка?

Кодирование — это способ, которым компьютер сохраняет текст в виде необработанных двоичных данных. Чтобы правильно читать текстовые данные, вы должны знать, какая кодировка использовалась для их хранения, а затем использовать ту же кодировку для интерпретации двоичных данных, чтобы получить исходный текст. Теперь вы, вероятно, думаете: «Звучит не так уж и плохо, ведь существует всего пара разных кодировок, и наверняка все текстовые данные содержат информацию о том, какая кодировка используется, верно?» Что ж, ответы на эти вопросы, к сожалению, не так просты, поэтому кодирование может стать таким кошмаром для разработчиков.

Что такое текст?

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

Краткое введение в Юникод

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

«Юникод – это отраслевой стандарт компьютерной техники для единообразного кодирования, представления и обработки текста, выраженного в большинстве систем письменности мира. Стандарт поддерживается Консорциумом Unicode, и по состоянию на май 2019 г. самая последняя версия Unicode 12.1 содержит репертуар из 137 994 символов, охватывающих 150 современных и исторических шрифтов, а также несколько наборов символов и эмодзи.

При обработке текста Unicode берет на себя роль предоставления уникальной кодовой точки — числа, а не глифа — для каждого символа. Другими словами, Unicode представляет символ абстрактным образом и оставляет визуальное представление (размер, форму, шрифт или стиль) другому программному обеспечению, такому как веб-браузер или текстовый процессор».

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

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

Итак, как работает кодирование?

Хорошо, давайте перейдем к мельчайшим деталям. Что на самом деле сохраняется при сохранении текстового файла? Во-первых, мы рассмотрим одну из самых старых и простых кодировок — ASCII. Вот выдержка из статьи Википедии для ASCII:

«Первоначально основанный на английском алфавите, ASCII кодирует 128 указанных символов в семибитные целые числа, как показано на приведенной выше диаграмме ASCII. Печатаются 95 закодированных символов: они включают цифры от 0 до 9, строчные буквы от a до z, прописные буквы от A до Z и знаки препинания. Кроме того, исходная спецификация ASCII включала 33 непечатаемых управляющих кода, созданных телетайпами; большинство из них сейчас устарели, хотя некоторые из них все еще широко используются, например возврат каретки, перевод строки и коды табуляции».

Поскольку ASCII был разработан в США и основан на английском алфавите, он содержит только стандартные английские символы. Это означает, что текст, содержащий неанглийские символы (например, буквы с акцентом или специальные буквы, используемые в других языках), не может быть точно закодирован в ASCII без замены специальных символов на стандартные английские. ASCII был разработан с использованием 7-битных кодов для представления закодированных им символов, но поскольку все современные компьютеры используют байты (8 бит) в качестве наименьшей единицы памяти, символы ASCII теперь хранятся с использованием 8 бит на символ. Первый бит просто не используется.

Весь стандарт кодирования ASCII выглядит следующим образом:

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

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

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

Это основы работы кодирования. В следующей части серии мы рассмотрим несколько различных кодировок и их отличия друг от друга, которые вы можете найти здесь: Кодировка 101 — Часть 2.

Целевая аудитория: авторы контента, пользователи и все, кто не знает, что такое кодировка символов, и хочет получить краткую информацию о том, как она на них влияет.

Вопрос

Что такое кодировка символов и зачем мне это?

Ответить

Во-первых, какое мне дело?

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

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

но на самом деле это может выглядеть так:

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

Так что же такое кодировка символов?

Слова и предложения в тексте создаются из файлов . Примеры символов включают латинскую букву á, китайскую иероглифику 請 или иероглиф деванагари ह .

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

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

Символы хранятся в компьютере как один или несколько .

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

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

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

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

Однако в большинстве случаев вам не нужно знать подробности. Вам просто нужно быть уверенным, что вы прислушаетесь к советам в разделе Как это на меня повлияет? ниже.

Как в это вписываются шрифты?

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

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

Заданный шрифт обычно охватывает один набор символов или, в случае большого набора символов, такого как Unicode, только подмножество всех символов в наборе. Если в вашем шрифте нет глифа для определенного символа, некоторые браузеры или программные приложения будут искать отсутствующие глифы в других шрифтах в вашей системе (это будет означать, что глиф будет отличаться от окружающего текста, например, примечание о выкупе). ). В противном случае вы обычно увидите квадратную рамку, вопросительный знак или какой-либо другой символ. Например:

Как это влияет на меня?

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

Авторам контента необходимо выяснить, как объявить кодировку символов, используемую для формата документа, с которым они работают.

Обратите внимание, что простое объявление другой кодировки на вашей странице не изменит байты; вам также нужно сохранить текст в этой кодировке.

Разработчикам необходимо убедиться, что различные части системы могут взаимодействовать друг с другом, понимать, какие кодировки символов используются, и поддерживать все необходимые кодировки и символы. (В идеале вы должны использовать кодировку UTF-8 везде и избавитесь от этой проблемы.)

По приведенным ниже ссылкам можно найти дополнительную информацию по этим темам.

Дополнительная информация

В этом разделе содержится небольшая дополнительная информация о сопоставлении между байтами, кодовыми точками и символами для тех, кому это интересно. Не стесняйтесь просто перейти к разделу «Дополнительная литература».

Обратите внимание, что числа кодовых точек обычно выражаются в шестнадцатеричной системе счисления, т.е. основание 16. Например, 233 в шестнадцатеричной форме равно E9. Значения кодовой точки Unicode обычно записываются в форме U+00E9.

В наборе кодированных символов ISO 8859-1 (также известном как Latin1) значение десятичного кода для буквы é равно 233. Однако в ISO 8859-5 та же самая кодовая точка представляет кириллический символ щ .

Эти наборы символов содержат менее 256 символов и напрямую сопоставляют кодовые точки со значениями байтов, поэтому кодовая точка со значением 233 представлена ​​одним байтом со значением 233. Обратите внимание, что только контекст определяет, будет ли этот байт представляет либо é, либо sch .

Есть и другие способы обработки символов из ряда сценариев. Например, с помощью набора символов Unicode вы можете представлять оба символа в одном наборе. На самом деле Unicode содержит в одном наборе, вероятно, все символы, которые вам когда-либо понадобятся. В то время как буква é по-прежнему представлена ​​кодовой точкой 233, кириллический символ щ теперь имеет кодовую точку 1097.

В наши дни байты обычно состоят из 8 бит. Существует только 2 8 (т.е. 256) уникальных способов объединения 8 битов.

С другой стороны, 1097 — слишком большое число, чтобы его можно было представить одним байтом*. Итак, если вы используете кодировку символов для текста Unicode, называемую UTF-8, щ будет представлена ​​двумя байтами. Однако значение кодовой точки получается не просто из значения двух соединенных вместе байтов — требуется более сложное декодирование.

Другие символы Юникода соответствуют одному, трем или четырем байтам в кодировке UTF-8.

Кроме того, обратите внимание, что буква é также представлена ​​двумя байтами в UTF-8, а не одним байтом, который используется в ISO 8859-1. (Только символы ASCII кодируются одним байтом в UTF-8.)

UTF-8 — это наиболее широко используемый способ представления текста Unicode на веб-страницах, и вы всегда должны использовать UTF-8 при создании своих веб-страниц и баз данных. Но, в принципе, UTF-8 — это лишь один из возможных способов кодировки символов Юникода. Другими словами, одна кодовая точка в наборе символов Unicode может фактически отображаться в различные последовательности байтов, в зависимости от того, какая кодировка использовалась для документа. Кодовые точки Unicode могут быть сопоставлены с байтами с использованием любой из кодировок, называемых UTF-8, UTF-16 или UTF-32. Символ деванагари क с кодовой точкой 2325 (что равно 915 в шестнадцатеричной записи) будет представлен двумя байтами при использовании кодировки UTF-16 (09 15), тремя байтами при использовании UTF-8 (E0 A4 95) или четырьмя байтами. байт с кодировкой UTF-32 (00 00 09 15).

Могут быть дополнительные сложности помимо описанных в этом разделе (например, порядок байтов и escape-последовательности), но описанные здесь подробности показывают, почему важно, чтобы приложение, с которым вы работаете, знало, какая кодировка символов подходит для ваших данных. , и знает, как обращаться с этой кодировкой.

Дополнительная литература

Начинаете? Введение в наборы символов и кодировки — указывает на другие документы W3C, связанные с наборами символов и кодировками

Учебное пособие, Работа с кодировками символов в HTML и CSS. Советы по выбору кодировки, ее объявлению и другим темам, связанным с HTML и CSS.

Настройка кодировки в веб-приложениях для разработки — как заставить ваш редактор сохранять в другой кодировке список сред редактирования.

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