Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Чет про программирование / 7) Кодирование символов

.docx
Скачиваний:
24
Добавлен:
25.04.2015
Размер:
16.45 Кб
Скачать

Кодирование символов

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

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

  1. Первая половина таблицы: 0 – 127 символы – цифры, знаки препинания, англ. Символы (первый бит нулевой)

  2. Вторая половина таблицы: 128 – 255 символы – необходимые символы, в зависимости от текущей кодировки (первый бит единица).

Однако возникли следующие вопросы:

  • Символы некоторых языков не помещались в оставшуюся половину таблицы ASCII

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

Юникод

Для решения данной проблемы было решено создать большую таблицу символов, которая содержала бы все существующие ныне символы + запас. И 1991 году она была создана. Ее название – Unicode.

Стандарт состоит из двух основных разделов: универсальный набор символов (англ. UCS, universal character set) и семейство кодировок (англ. UTF, Unicode transformation format). Универсальный набор символов задаёт однозначное соответствие символов кодам — элементам кодового пространства, представляющим неотрицательные целые числа. Семейство кодировок определяет машинное представление последовательности кодов UCS.

Казалось бы, все проблемы решены, однако появились новые:

  • При таком большом количестве символов на кодировку одного символа уходит слишком много байт

  • Многие английские тексты уже были написаны с помощью ASCII.

UTF-8 — представление Юникода, обеспечивающее наилучшую совместимость со старыми системами, использовавшими 8-битные символы. Текст, состоящий только из символов с номером меньше 128, при записи в UTF-8 превращается в обычный текст ASCII. И наоборот, в тексте UTF-8 любой байт со значением меньше 128 изображает символ ASCII с тем же кодом. Остальные символы Юникода изображаются последовательностями длиной от 2 до 6 байт (на деле, только до 4 байт, поскольку в Юникоде нет символов с кодом больше 10FFFF, и вводить их в будущем не планируется), в которых первый байт всегда имеет вид 11xxxxxx, а остальные — 10xxxxxx. В UTF-8 не используются суррогатные пары, 4-x байтов достаточно для записи любого символа юникода.

UTF-16 (англ. Unicode Transformation Format) в информатике — один из способов кодирования символов из Unicode в виде последовательности 16-битных слов. Данная кодировка позволяет записывать символы Юникода в диапазонах U+0000..U+D7FF и U+E000..U+10FFFF (всего 1 112 064 штук). При этом каждый символ записывается одним или двумя словами (суррогатная пара).