06 августа 2008
2180

О кодировке кирилицы для Тараса Шевченко

Компьютеры придумали англичане (американцы сделали бизнес), поэтому родным для компов является английский.
Национальные алфавиты - это все остальные, которые неанглийские.

Кодирование символов и вообще клавиш на клаве до появления UTF"а было восьмибитным и даже (для KOI8) семибитным.
Это значит, что для кодирования клавиш на клаве и символов текста (я тут намеренно абстрагируюсь от сканкодов и прочих тонкостей) отведено было только 256 штук, как их назвать? Ячеек таблицы, скажем.

28 железно занимает английский алфавит, затем знаки пунктуации, символы для рисования таблиц, спецсимволы (например Esc - код 27, Enter -13, просто пробел - 32), итого под национальный алфавит европейских языков едва-едва оставалось около 30 свободных ячеек, а уж про китайский речь вообще не шла - иероглифов слишком много.

Таким образом одновременно текст мог содержать только два набора символов: английский и какой-нибудь один вроде французского или русского.
Без гемороя и шаманских танцев с бубном создать три-язычный или больше текст было невозможно.

Так например написать текст на русском с цитатами на французском или даже на украинском не представлялось возможным (привет Л.Толстому и Т.Шевченко).

Потом одна фирма придумала такой редактор Word. Поскольку это уже была эпоха графики, то ей пришло в голову кодировать знаки не 8-мью, а большим количеством бит. Что ж, выводить буковки уже было не обязательно точками в узком прямоугольнике, поэтому в шрифтах от Микрософт вы найдете не только буквы, но и кучу разных пиктограмм, то бишь - целых картинок. Нажимаешь клавишу, на которой нарисована буква, и бац - вместо просто буквы нарисовался, например, целый принтер.

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

Наконец умные люди почесали репу и решили, что пора бы разобраться с этим вопросом по настоящему (а не по микрософтовски). Пришла пора UTF, т.е. многобайтной кодировки. Теперь места в таблице навалом (не 256 ячеек, а 65 тыс. как минимум) - хватает на все алфавиты в мире и еще остается изрядно для инопланетян. Пишите товарищи толстые, хоть на пяти, хоть на десяти языках вперемешку.

Одна только незадача, каждая буква теперь занимает больше места.
Намного больше. В разы.
Ну и чем больше в тексте буковок тем... ну в общем понятно.
До определенного предела это не проблема. "Война и Мир" и даже полное собрание классиков для современных серверов - просто мелочь, однако для действительно больших объемов - кратное увеличение размеров файлов даром не обходится.

Поэтому, в силу косности мышления программистов (например меня), которые живут по поговорке: "если что-то работает, не трогай - пусть себе работает", многие большие базы данных до сих пор хранят тексты не в прогрессивном и универсальном (но прожорливом) UTF"е, а в привычном, быстром и экономном KOI8.

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

Вот такая история. И напоследок полезная ссылка. Ребята Тёмы Лебедева сделали расшифровщик испорченных кодировок. Если вы наступили-таки на грабли кодировки вам сюда.


Александр Немченко
Рейтинг всех персональных страниц

Избранные публикации

Как стать нашим автором?
Прислать нам свою биографию или статью

Присылайте нам любой материал и, если он не содержит сведений запрещенных к публикации
в СМИ законом и соответствует политике нашего портала, он будет опубликован