Текстовые файлы и кодировка
Текстовый файл — простейший тип. Традиционно каждый байт такого файла кодирует один символ из набора 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 Comments
Recommended Comments
There are no comments to display.
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now