Перейти к содержанию
Восточное Дегунино

Текстовые файлы и кодировка


Denis

656 просмотров

Текстовый файл — простейший тип. Традиционно каждый байт такого файла кодирует один символ из набора ASCII. Грубо говоря, один байт — один знак. Такой тип файлов не содержит ничего, кроме текста! В этом легко убедиться, открыв текстовый файл в HEX-редакторе.

Однако 8-битной кодировки явно недостаточно для обозначения всех символов всех алфавитов. Точнее, закодировать можно, но нужно прямо оговаривать кодовую страницу — символам какого алфавита соответствуют 8битные коды в данном случае. Например, если текст сохранен в кодовой странице DOS866, а вы открываете его в Блокноте, который работает с кодовой страницей Win1251, вместо русских букв вы увидите «крякозябры».

В последнее время нормой стала кодировка Unicode, в которой для хранения одного символа используется 4 байта (32 бита). Программам не надо «думать» о кодовых страницах — набора Unicode с избытком хватит для кодирования всех живых и мертвых алфавитов. Так появились текстовые файлы в кодировке Unicode: четыре байта — один знак.

Разные представления Unicode отличаются числом битов, задействованных в кодировании символа (UTF-8, UTF-16, UTF-32), а также порядком байтов: big endian (BE) — старший байт записан перед младшим, little endian (LE) — обратный порядок. Для относительной совместимости со старыми ОС и программами применяется такое представление кодировки Unicode, как UTF-8. В тексте UTF-8 любой байт со значением меньше 128 изображает символ ASCII с тем же кодом. Блокнот Windows 7 позволяет сохранять текстовые файлы в одной из четырех кодировок на выбор.

Текстовые файлы в кодировке Unicode UTF-8 содержат в самом начале последовательность EF BB BF. Это метка порядка байтов (Byte Order Mark, BOM), иначе называемая сигнатурой файла UTF-8.

Если файл сохранен в других представлениях Unicode, и сигнатуры будут другими:

  • UTF-16BE — FE FF; 
  • UTF-16LE — FF FE; 
  • UTF-32BE — 00 00 FE FF; 
  • UTF-32LE — FF FE 00 00. 

Благодаря сигнатурам программы при открытии таких файлов правильно интерпретируют значения последующих байтов. Если же сигнатуры нет, это файл либо в 8битной кодировке, либо в UTF-16BE или UTF-32BE.

0 Комментариев


Рекомендуемые комментарии

Комментариев нет

Создайте учетную запись или войдите, чтобы комментировать

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти
×
×
  • Создать...