Перейти к публикации

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

Denis

37 просмотров

Текстовый файл — простейший тип. Традиционно каждый байт такого файла кодирует один символ из набора 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 комментариев


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

Нет комментариев для отображения

Создайте аккаунт или войдите в него для комментирования

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

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

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

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

Войти

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

Войти сейчас
×
Вверх