КОДИРОВОК МНОГО, А ГОЛОВА ОДНА...
(С) Гаузер Э.Г., Баку, 2003-2024г.
website: www.erichware.com
Число основных языков, на которых говорит человечество, точно не подсчитано, но их что-то около 200. С одной стороны, это хорошо и их нужно сохранять, как элементы культуры и самобытности разных народов. С другой, наличие большого числа языков затрудняет общение и взаимопонимание между разными людьми. Изучение чужого языка - дело долгое и трудное, а подчас и дорогое. Но с этим ничего не поделаешь, изобилие языков - объективный факт.
К сожалению, в мире компьютеров ситуация получилась примерно такая же. Речь сейчас не о языках программирования (которых тоже немало), речь о различных кодировках, в которых представляется информация.
Если первые 128 символов изначально были стандартизированы и признаны практически всеми странами, то со вторыми 128 символами наблюдается некоторый хаос. Конечно, стран много и национальных языков тоже, поэтому эти 128 символов и были отданы под национальные языки. Все бы хорошо, но и тут нет единства. Взять хотя бы русские символы, которые всех нас интересуют больше всего. Тут широкое распространение получили три кодировки: DOS-866, Win-1251 и KOI-8, хотя есть и еще несколько менее популярных.
Как ни крути, а невозможно среди них выбрать одну и пользоваться ею. Хотя бы потому, что огромное количество написанных ранее программ, отказаться от которых невозможно, используют ту или иную кодировку из этого набора.
В последнее время наблюдается попытка заменить все национальные кодировки на одну - Unicode, которая представляет символы не одним, а двумя байтами. Это действительно очень удобно, поскольку раз и навсегда закрепляет за всеми символами каждого языка какой-то один номер в общей таблице и пользователю (а в идеале и программисту) думать о кодировках уже не надо.
К сожалению, до такой спокойной жизни еще далеко. Подавляющее большинство имеющихся программ либо вообще не понимают эту кодировку, либо все равно неявно переводят двухбайтовые символы в однобайтовые для представления на экране или в текстовых файлах. А раз переводят - значит, опять вопрос, в соответствии с какой кодировкой это делать.
Проблема разных кодировок становится очень актуальной при переписке по интернету. Личный опыт (и отзывы друзей, знакомых и посторонних) показывает, что переписка по электронной почте на русском языке часто сопровождается большими проблемами. Иногда это связано с некомпетентностью самих пользователей, но чаще - с ошибками в почтовых программах или просто в их взаимной несогласованности в вопросе о кодировках. И тогда вместо нормального русского текста письмо приходит в виде полной абракадабры.
Намучившись с такими письмами, а также убедившись, что проблема перекодировки возникает и в случае скачивания, и во многих других, я написал в разное время три программы, призванные хоть как-то облегчить жизнь при переписке: "Rusred", "Rulawi" и "Txt2pcx". Что они делают?
Программа "Rusred" - это уникальный текстовый редактор, созданный когда-то специально для русскоязычных пользователей, живущих вне пределов СНГ и чаще всего не имеющих на своих компьютерах какой-либо русификации. На самом деле почти всегда этот вопрос можно решить, но для этого нужно разбираться в тонкостях системы, чего, опять же, большинство не умеет и не желает.
Редактор этот отличался тем, что имел встроенную русификацию как экрана, так и клавиатуры, позволяя набирать и читать русские тексты на машинах, вообще не понимающих русский. Программа в принципе являлась DOS-приложением, но даже запущенная из WINDOWS (хоть китайской), все равно разговаривала на русском.
С точки зрения возможностей редактирования текста данная программа, конечно, не является повторением WORD`а, но для написания писем (а это было ее основное назначение) возможности WORD`а и не нужны, достаточно и простого блокнота.
Однако, в отличие от блокнота, этот редактор позволял переводить набранный или считанный с диска текст из одной кодировки в другую. Поддерживаются кодировки DOS-866 (в которой изначально набирается текст и представляются считанные файлы), Win-1251, KOI-8, а также т.н. фонетическая кодировка, заменяющая русские буквы латинскими и наоборот. Возможно также чтение и сохранение файлов в Unicode.
Из-за того, что русских букв больше, чем латинских, а перевод должен производиться без изменения размера текста, для фонетической кодировки пришлось пойти на некоторые ограничения, которые, впрочем, практически не мешают читать переведенные тексты (например, русские буквы "ш" и "щ" заменяются одной латинской "w", при обратном переводе может получиться рыба "шука", но это, я думаю, все равно лучше любой абракадабры).
Латинская кодировка нужна тогда, когда пишущий письмо не знает расположение русских букв на клавиатуре, не может их наклеить или нет времени набирать одним пальцем, зато свободно знает расположение латинских букв. Не страшно, пусть пишет на русском латинскими буквами, имея "Rusred", Вы спокойно переведете это послание в кириллицу и прочитаете его. Конечно, если при наборе он будет заменять буквы по правилам "Rusred", но эти правила просты и естественны.
Часто бывает, что письмо приходит многократно перекодированное в дороге разными программами и тогда сколько не меняй кодировку в меню Эксплорера, толку не будет. Что делать? Скопируйте полученный текст в буфер обмена, превратите его в текстовый файл (через блокнот, например), после чего считайте "Rusred"`ом - и пробуйте разные виды перекодировок, пока текст не станет нормальным. К сожалению, варианты бывают разные, единого рецепта нет.
Если у пользователя нет на клавиатуре наклеек с русскими буквами, Rusred позволяет вывести на экран графическое изображение клавиатуры с раскладкой русских символов.
Кроме того, этот редактор имеет и еще несколько полезных функций: поиск и замену, поддерживает горизонтальные и вертикальные (прямоугольные) блоки, позволяет зашифровывать сохраняемый на диск текст, форматирует абзацы и т.д. Возникает соблазн написать такой редактор под Windows, чтобы не трудиться по переброске текста через буфер обмена, блокнот, диск... Увы, ничего не выйдет. Конечно, перекодировки работать будут, но вот сделать программу с полной своей русификацией под Windows, пожалуй, невозможно (или она превратится в монстра). А ведь смысл данной программы именно в полной собственной русификации. Кстати, программа запускается в режиме EGA (640*350), что иногда вызывает недовольство системы. Однако, проблем нет, просто в этом случае RUSRED должен работать в полноэкранном режиме, а не в окне.
НО! Все описанное работало для старой версии под ДОС. С тех пор много воды утекло и сейчас я советую прочитать статью "Редакторы для текста". Русред уже давно стал "подоконным приложением", утратил русификацию экрана, но зато приобрел много новых функций. Но перекодировки остались!
Программа "Rulawi" со времени появления первой версии стала чисто консольным приложением для Виндовс, причем теперь она распространяется с исходными текстами (их можно скачать на этом же сайте в другом разделе). Предназначена она просто для формальной перекодировки файлов, имя файла и вид перекодировки указываются в командной строке в виде параметров, что современным пользователям не очень привычно, но зато в этом случае можно перекодировать сразу множество файлов, используя маску вместо имен. Программа эта поддерживает те же кодировки, что и "Rusred".
Что касается программы "Txt2pcx", то, как видно из ее названия, она переводила текстовые файлы в графическое изображение. Зачем?
Во-первых, бывают, увы, такие пользователи, что даже с программой "Rusred" разобраться не могут (а скорее, не хотят) и тогда выход только один - послать им письмо в виде картинки. Писать от руки, а потом сканировать - доступно не всем. Писать прямо в графическом редакторе - можно, но крайне неудобно, не приспособлены они для написания писем... И тогда проблема решается просто: пишете письмо в любом текстовом редакторе, сохраняете в виде текстового файла (в любой из указанных выше кодировок), а затем переводите этот файл в графический формат. Выглядеть он будет как исходный.
Во-вторых, если при пересылке обычного текста есть шанс его просмотра любопытными людьми или программами, то в случае пересылки картинки программы прочитать сам текст просто не смогут, а люди - не догадаются. Конечно, этот вариант применения - экзотика, да и не скроет письмо от компетентных товарищей (а зачем Вам от них скрываться?), но от праздного любопытства защитить сможет.
Остается вопрос, почему выбран именно формат "pcx"? При всей кажущейся экзотичности, этот формат имел раньше весьма широкое распространение, он читается любым приличным графическим редактором, очень прост при программировании и создает достаточно компактные файлы, особенно в случае чернобелого варианта (как здесь). Конечно, степень сжатия этого формата не столь велика, как у "gif" или "jpg", но зато он широко известен и легко реализуется. А пересылать в виде картинок романы и поэмы все равно никто не станет.
Среди готовых программ можно найти аналогичные "Rulawi", частично аналогичные "Rusred" (хотя и не совсем), но какими пользоваться - решать самим пользователям. А вот аналога программе "Txt2pcx" я не встречал вообще. Но как видите, ссылки на нее тут нет. Дело в том, что я прекратил поддержку этой программы, а сохранение текста в виде файла "pcx" теперь производит сам "Rusred".