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

История:

Если говорить о начале, то здесь были только точки и пунктиры, и это была самая ранняя форма набора символов и кодировки, которую Морс использовал для телеграфа в 1844 году, когда он отправил свое первое сообщение. Его код был первой попыткой представить буквенные символы в виде серии битов.

Позже, в июне 1963 года, на основе кодов FIELDATA Американский институт стандартов создал стандарт ASCII-63 (Американский стандартный код для обмена информацией). ASCII-63 почти узнаваем для нас, все управляющие коды ниже 0x20, пробел - 0x20, а затем следуют числа, знаки препинания и символы верхнего регистра (с A как 0x41). Единственное вопиющее упущение в ASCII-63 - отсутствие символов нижнего регистра.

Затем, в октябре 1963 года, орган стандартизации ISO решил, что миру нужны символы нижнего регистра, затем в него были добавлены символы нижнего регистра, и помимо этого были внесены некоторые незначительные изменения в символы пунктуации и выпущен стандарт как ECMA-6.

В 1967 году ASA приняла ECMA-6 и выпустила его как ASCII-1967, 7-битный код, содержащий 128 символьных кодов, который используется до сегодняшнего дня.

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

Посмотрите на строку hello в байтах

$byte_array = unpack('C*', 'hello');
var_dump($byte_array);
[ 104, 101, 108, 108, 111 ]

Итак, для строки hello кодировка такая:
h = 104, e = 101, l = 108, l = 108, o = 111

Теперь посмотрим на кодировку hellṏ.

$byte_array = unpack('C*', 'hellṏ');
var_dump($byte_array);
[ 104 , 101 , 108 , 108 , 225 , 185 , 143 ]

Теперь мы видим, что для представления "ṏ" требуется более одного байта. Фактически три: [225, 185, 143]. Кодировка строки определяет это отношение: кодировка - это карта между одним или несколькими байтами и отображаемым символом.

ASCII является фундаментальным:

Первоначально 1 символ всегда сохранялся как 1 байт. Байт (8 бит) может иметь 256 различных значений. Но на самом деле использовались только первые 7 бит. Таким образом, было определено только 128 символов. Этот набор известен как набор символов ASCII.

  • 0x00 - 0x1F содержат коды рулевого управления (например, CR, LF, STX, ETX, EOT, BEL, ...)
  • 0x20 - 0x40 содержат цифры и знаки препинания
  • 0x41 - 0x7F содержат в основном буквенные символы
  • 0x80 - 0xFF 8-й бит = не определен.

Французский, немецкий и многие другие языки нуждаются в дополнительных символах. (например, à, é, ç, ô, ...), которые не были доступны в наборе символов ASCII. Поэтому они использовали 8-й бит для определения своих персонажей. Это так называемый расширенный ASCII.

Проблема в том, что дополнительного 1 бита недостаточно для покрытия всех языков мира. Таким образом, у каждого региона есть свой вариант ASCII. Существует множество расширенных кодировок ASCII (latin-1 очень популярная).

Популярный вопрос: «Является ли ASCII набором символов или кодировкой»? ASCII - это набор символов. Однако в программировании charset и encoding широко используются как синонимы. Если я хочу сослаться на кодировку, которая содержит только символы ASCII и ничего более (8-й бит всегда 0): это US-ASCII

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

Следующие условия применяются к кодировкам символов:

  • SBCS однобайтовый набор символов; набор символов, закодированный по одному байту на символ, например ASCII или ISO 8859–1.
  • DBCS двухбайтовый набор символов; метод кодирования набора символов размером не более 2 байтов, например Shift-JIS. Многие схемы кодирования символов, которые называются двухбайтовыми, включая Shift-JIS, позволяют смешивать однобайтовые и двухбайтовые символы. Другие, такие как UCS-2, используют 2 байта для всех символов.
  • MBCS Многобайтовый набор символов; набор символов, закодированный с переменным количеством байтов на символ, например UTF-8. В следующей таблице перечислены некоторые общие кодировки символов; однако есть много дополнительных кодировок символов, которые поддерживают браузеры и веб-серверы:

Консорциум World Wide Web ведет список всех кодировок символов, поддерживаемых Интернетом. Вы можете найти эту информацию по адресу www.w3.org/International/O-charset.html.

Кодировка на веб-страницах:

Позвольте мне немного понять, как на самом деле работает веб-страница.

Таким образом, веб-страницы обслуживаются с использованием HTTP (протокол передачи гипертекста). Это означает, что когда браузер отправляет запрос через HTTP, то в ответ сервер отправляет ответ через HTTP. И этот ответ состоит из двух частей: заголовка и тела. Заголовок предоставляет информацию о содержимом (теле).

Для HTML информацию о кодировке следует отправлять с помощью заголовка Content-Type:

Content-Type: text/html; charset=utf-8

Вы также можете предоставить HTTP-эквивалент в HTML, который включит кодировку при просмотре страницы в автономном режиме. Вы можете добиться этого, используя элемент META в разделе HEAD вашего документа:

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>

Сервер Apache - один из наиболее часто используемых серверов для обслуживания веб-страниц.

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

Откройте файл .htaccess в текстовом редакторе и измените его, чтобы включить в него.

AddDefaultCharset UTF-8

Nginx также является очень популярным веб-сервером. Мы можем изменить заголовки ответов на сервере Nginx в файле config. Просто откройте файл nginx.conf в каталоге conf / и добавьте следующий код.

charset UTF-8

Заключение

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