Меню

КОДИРОВОК МНОГО, А ГОЛОВА ОДНА...

(С) Гаузер Э.Г., Баку, 2003г.
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" разобраться не могут (а скорее, не хотят) и тогда выход только один - послать им письмо в виде картинки. Писать от руки, а потом сканировать - доступно не всем. Писать прямо в графическом редакторе - можно, но крайне неудобно, не приспособлены они для написания писем... И тогда проблема решается просто: пишете письмо в любом текстовом редакторе, сохраняете в виде текстового файла (в любой из указанных выше кодировок), а затем переводите этот файл в графический формат. Выглядеть он будет как исходный. Только одно помните: длина строки не должна быть очень большой, иначе читать такой файл будет затруднительно. Поэтому, если набираете текст в Windows-редакторах, нажимайте вовремя на "Enter".

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

В-третьих, я использую "Txt2pcx" для создания файлов "readme" к некоторым своим программам (например, "Dikar" и "Edifon") на тот случай, если пользователь не сумеет с первого захода прочитать соответствующий текстовый файл.

Остается вопрос, почему выбран именно формат "pcx"? При всей кажущейся экзотичности, этот формат имел раньше (да и сейчас) весьма широкое распространение, он читается любым приличным графическим редактором (в частности, программой "Imaging", входящей в комплект Windows), очень прост при программировании и создает достаточно компактные файлы, особенно в случае чернобелого варианта (как здесь). Конечно, степень сжатия этого формата не столь велика, как у "gif" или "jpg", но зато он широко известен и легко реализуется. А пересылать в виде картинок романы и поэмы все равно никто не станет.

Среди готовых программ можно найти аналогичные "Rulawi", частично аналогичные "Rusred" (хотя и не совсем), но какими пользоваться - решать самим пользователям. А вот аналога программе "Txt2pcx" я не встречал вообще.

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

Небольшое дополнение.

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

Однако, новый "подоконный" "Rusred" утратил собственную поддержку русификации экрана (служебные надписи и пункты меню выводятся системными шрифтами), но зато приобрел несколько новых функций, которые невозможно было реализовать в досовской версии. Сейчас это очень удобный и достаточно мощный, хотя и несколько специфический редактор. Делайте свой выбор!

Программа "Rulawi" сейчас полностью консольная, поддерживает utf-8 и распространяется с открытыми исходными кодами для разных платформ. Тоже очень простая и удобная программа.

Программа "Txt2pcx" теперь имеет свой интерфейс и даже простейший встроенный редактор. Для преобразования можно использовать встроенный шрифт или скачать с данного сайта дополнительный набор шрифтов.