Ваше местоположение в сети:
Рубрика:

Кодировка текста

Разделы сайта:

Сегодня я хочу поговорить о кодировках. У вас встречалась ситуация, когда вы получаете электронное письмо, но не можете его прочитать - вместо текста идут какие-то кракозябры? То же самое случается и в интернете - открываете страницу, а разобрать ничего не возможно. Причем заметьте, подобное происходит именно с русским текстом, с английским подобные проблемы маловероятны. Причина проблем - открытие файла в неверной кодировке.

Я расскажу сначала, почему так сложилось, что бывают разные кодировки текста, скажу, которую кодировку считаю самой правильной и закончу тем, что дам ссылку на программу, которая поможет определить, в какой кодировке находится нечитаемый текст и раскодировать его для вас. Программа - бесплатная, так что, надеюсь, эта статья принесет пользу и тем, кто знает, что такое кодировки.

Для начала немного посчитаем. Помните, что такое бит? Это минимальный носитель информации, ноль или один. А байт содержит восемь битов. Сколько может быть комбинаций из нулей и единиц длины 8? Ответ - 2*2*2*2*2*2*2*2=256. Именно столько значений может принимать один байт. Иногда еще байт называют символом - потому что как раз для кодировки символа и стали использовать один байт. Даже меньше, изначально была придумана кодировка ASCII, которая использовала 7 битов - в первые 128 значений можно было вольготно разместить английский алфавит в обоих регистрах, диакритические знаки, цифры и набор спец-символов. И эта кодировка действительно стала универсальной, поэтому англоязычные пользователи крайне редко могут испытывать проблемы с кодировкой.

Перейдем к кириллице. Для нее стали использовать вторую половину кодовой таблицы - символы 129-256. Однако так сложилось, что различные кодировки были изобретены независимо - одни изобретатели располагали буквы, стремясь к соответствию расположения на пишущих машинках, другие - к тому, чтобы одинаково выглядящие кириллические и латинские буквы находились на расстоянии в 128 (что приводило к тому, что даже программы, не умевшие работать со второй половиной таблицы, более-менее читаемо отображали русский текст). Были и другие идеи; появление Windows также принесло свою кодировку текста. Но главное, такая кодировка принципиально не могла стать универсальной, так как если латиница была нужна везде (хотя бы для командной строки), то кириллица была лишь одним из национальных алфавитов.

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

Ради прикола привожу скриншот статьи википедии про юникод в сбитой кодировке. Почему? А потому что именно Unicode должен решить все эти проблемы.

unicode

У единой, потенциально универсальной кодировки текста, существует название: Unicode, и придумана она была уже давно, в 1991 году. В Юникоде используется 6 байтов для отображения символа. Однако, на практике этого оказывается слишком много, кроме того нужно было подумать о совместимости с уже имеющимися однобайтовыми текстами на английском, поэтому у Юникода существуют так называемые "представления", способы записи, самым распространенным из которых является UTF-8.

UTF-8 устроена следующим образом: символ, относящийся к таблице ASCII (первые 128, см. выше) так и записывается одним байтом. Остальные символы записываются последовательностями байтов длины от 2 до 6, первые биты которых зарезервированы (чтобы избежать путаницы с ASCII-символами). Для русского языка получается, что кодировка становится двубайтовой, при этом глобальное утверждение, что UTF-8 это двубайтовая кодировка категорически неверно!

В общем, я считаю, что несмотря на все проблемы, человечество должно переходить на UTF-8. Даже была шутка на башорге - приравнять использование любой другой кодировки к разжиганию межнациональной розни. Microsoft Office перешел на UTF-8 при переходе к Windows XP. Если помните, в старых версиях Ворда были кучи подвидов шрифта Times New Roman, а затем они объединились. Это и было связано с тем, что раньше использовалась однобайтовая кодировка (с разными вторыми половинами кодовых таблиц), а теперь Unicode.

И обещанная программа. Скачиваем, запускаем, установки она не требует. Копируем в поле кусок текста и нажимаем кнопку перекодировать. Обычно она прекрасно работает!

← Что такое Линукс?Структура интернета →
comments powered by Disqus