Блог


Кодировки файлов

Я не зря именно так назвал статью. Я прекрасно знаю, что нет понятия "кодировка файла". Однако народ с каким то невероятным упорством продолжает оперировать этим термином. Ну а значит, рано или поздно, они придут сюда по такому запросу.

Ну а что же есть, если нет кодировки файла? Сначала давайте разберемся, что вообще такое "кодировка".

Любой символ на экране монитора состоит из совокупности точек. А значит, чтобы отрисовать какую-нибудь букву, нужно задать компьютеру множество координат этих точек. Кроме того, шрифты бывают разными по величине, жирности, наклону, цвету наконец. Представьте себе объем информации, который требуется для передачи координат точек допустим текущей статьи. Это особенно было нереально много во времена расцвета кибернетики, когда и носители информации были смехотворно малы и скорость передачи данных ужасно низка.

Однако жить как то было надо, и текст хранить и передавать тоже. Для этого была придумана так называемая таблица символов. Другими словами не стали заморачиваться передачей множества координат, а поместили их сразу в компьютер. Из коробки, как говорится. Теперь стало достаточно передать определенный короткий код в один-два байта, а компьютер лез в свой закром и доставал требуемый символ оттуда, сопоставив эти коды. Отсюда пошло название "таблица сопоставлений".

Допустим в windows можно посмотреть на эту таблицу в меню 
"пуск" -> "все программы" -> "стандартные" -> "служебные" -> "таблица символов"


И все бы ничего, но компьютерная техника развивалась довольно бурно в разных странах, и каждый производитель пытался сделать как ему удобнее. Соответственно появилась куча совершенно различных таблиц. Когда хватились и попытались стандартизировать, было уже поздно. И теперь китайские компьютеры не понимают английских кодов, а русские не понимают письменность майя.

Конечно это не совсем так, кое-какая стандартизация все же была произведена. Просто в каждой уважающей себя операционной системе есть теперь не одна, а целая куча таблиц символов. Вот их и называют "кодировками". Допустим самая известная в России windows-1251 была придумана для пиратских версий винды, а теперь она стандартизирована.

А еще на сегодняшний день разработана универсальная "кодировка" - юникод или UTF-8. Но пользуются ей пока не все.

Ну а теперь посмотрим, что же принято неграмотно называть "кодировкой файла". Если вы поняли, что такое таблицы сопоставлений, то вам не трудно будет понять, что кодировки бывают только у текстов. А в файл можно записать любые данные, бинарные допустим. А посему у файла нет и быть не может такой характеристики, как "кодировка". Почему же все так путаются.

Просто потому, что любой текстовый редактор умеет распознавать кодировку текста в файле. А если не может, ставит дефолтную. И, открывая  файл в редакторе, многие думают, что он показывает ту самую преславутую "кодировку файла". Хотя в одном файле может находится текст в нескольких разных кодировках или вообще бинарник без оных.

Кодировка есть только у текста, записанного в файл.

Так что запомните, как отче наш. 

1. У файла нет свойств "кодировка"
2. Не все читающие средства (браузеры к примеру) могут корректно определить кодировку текста автоматически. Обязательно требуется указать её в сопутствующей информации. Например в заголовках.
3. Старайтесь не эксперементировать с таблицами, все равно рано или поздно все придут к одному стандарту. На сегодня это UTF-8. 

Тогда и не будет паники по поводу злых китайских кракозяблов, неизвестно откуда взявшихся на нашу голову в файле с "правильной кодировкой".

 

Николай aka twin

Теги: PHP | HTML

Комментарии (0)


 
Наверх