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

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

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

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

Для начала немного посчитаем. Помните, что такое бит? Это минимальный носитель информации, ноль или один. А байт содержит восемь битов. Сколько может быть комбинаций из нулей и единиц длины 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.

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

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

Дата: 31 марта 2010 г., категория: настройки windows.

Хотите знать все об интернете?

Введите свой адрес электронной почты чтобы подписаться на обновления!



Доставляется при помощи FeedBurner. Никакого спама. Всегда можно отписаться!

Загружается, подождите...
← ЛинуксСтруктура интернета →

Комментарии

1#

DreaMinder
31 марта 2010 г. 20:42:14

Этот вопрос еще более актуален и для веб-мастеров.
Ведь от их умелости зависит частота появления "крякозябр" в инете.
Думаю нужно просто массово переходить на UTF-8... Меньше глюков будет.

И так же актуален вопрос КАК перейти на другую кодировку инструментами веб-мастера. Я пользуюсь конвертатором Notepad++, хоть он иногда подводит.
Для программистов есть 2 функции для конвертации кодировки на php: iconv и... ой, забыл... mb_convert_encoding по-моему...
Надеюсь был полезный коммент)
 

2#

Sander ok
31 марта 2010 г. 22:54:16

И использовать следующее в .htaccess
AddDefaultCharset UTF-8
CharsetPriority UTF-8 windows-1251 koi8-r ISO-8859-5 ibm866
CharsetDefault UTF-8
CharsetSourceEnc UTF-8
 

3#

DreaMinder
1 апреля 2010 г. 20:20:34

Sander, да... Но на сколько показывает моя практика и понимание конфигураций APACHE, такие строки лишь указывают кодировку сайта браузеру...Тот же самый эффект делает вот такая строка между тегов head (добавьте кавычки тега) meta content="text/html; charset=utf-8" http-equiv="Content-Type"
вот настоящие проблемы начинаются почти у всех любителей utf-8, когда нужно вставть фрагмент страницы с другой кодировкой. (У меня на сайте такое случалось 4 раза - приходилось ковертировать кодировку с PHP)
Но, думаю, проблема с кодировками даже не у сайтов... а у писем на почтовый ящик. хоть и почти у всех клиентов есть кнопка "изменить кодировку", исьма с моего форума приходят на некоторые клиенты с таким заголовком: "?????? ????-?????"
В общем разные кодировки - как разные языки в одной стране - составляют проблемы....
пока не видел решений корпораций-гигантов по решению этой проблемы... нам только приходится исправлять и терпеть =(
 

4#

Elena
2 апреля 2010 г. 11:53:32

А я для раскодировки текста использую вот этот сайт - http://www.charset.ru/
Конечно для раскодировки сраниц веб сейтов он не подходит, а вот текста из месенджеров или писем - вполне.
 

5#

Alex Smith
4 апреля 2010 г. 02:27:09

Мне также кажется, что более разумно будет всем придерживаться какого-то одного стандарта в кодировке. Пример. Когда-то(год назад) у меня был сайт на народе(ручками на DreamWeaver'е делал!),а там как известно, кодировка windows 1251. На нём висели партнёрские банеры магазина и прекрасно всё работало.
Что интересно, когда я повесил эти же баннеры на один из блогов с UTF-8, текст на них стал кракозябрами. Очень неудобно.
Должен быть общепринятый стандарт. Я так думаю.
 

6#

Octavian
4 апреля 2010 г. 17:01:37

Интересная статья.

Несомненно нужен единый стандарт. Потихоньку туда и движемся. Я еще помню время когда в интернете в шапке каждого сайта были переключатели - [Win/Koi/Mac], сейчас же дела явно лучше )
 

7#

uppcorp
2 февраля 2011 г. 22:01:07

Согласен с автором.
Главное при переходе к utf-8 кодировать без bom, от этого многие скрипты могут некорректно работать.
 

Подписаться на: комментарии к статье (rss), комментарии к статье (e-mail)

[*] Авторизоваться при помощи профиля Google (и не только)
Самые активные участники сайта:

Хотите разместить здесь свою аватарку? Авторизуйтесь, загружайте картинку и комментируйте!
Имя:

E-mail (если хотите подписаться на комментарии):

Сайт (не обязательно):

Я - робот! (снимите галочку, если это не так)
Для блоггеров: если вы хотите чтобы ваша ссылка индексировалась поисковыми системами, вам нужно авторизоваться при помощи Google Friend Connect и написать осмысленный комментарий по теме. В таком случае я переведу ваш аккаунт в разряд "trusted". Комментарии пользователей с проверенным аккаунтом не попадают на модерацию, ссылки индексируются, а рядом с ником стоит значок с зеленой галочкой. Да, модерацию могут пройти только ссылки IT-тематики! Внимание: если вы не авторизуетесь, я не смогу сделать вашу ссылку активной даже если мне понравятся ресурс и комментарий!
Комментарий:

Подписаться на  комментарии к статье (rss), комментарии к статье (e-mail)