Emacs для начинающих



         

Крестоносцы - часть 12


Откуда берут информацию о кодировке письма:

  • из служебных полей заголовка письма
  • из конфигурационных файлов;
  • имеют выделенный виртуальный сервер для работы с каждой из кодировок;
  • определяют кодировку по содержимому письма.
  • Первый подход перекладывает ответственность на почтовую программу пользователя. Она должна включить в заголовок письма правильный charset. Это был бы самый правильный подход для какой-нибудь Германии, но только не для России. У нас даже координаторы конференций используют неправильный charset, а потом обвиняют слишком умный софт, который все делает через задницу (читай - соблюдает стандарты), когда у всех остальных (читай - не соблюдающих никаких соглашений, а просто "делающих как я") - все нормально. При всеобщей безответственности и поголовном "обмане" программ и стандартов такое решение приводит к печальным последствиям.

    Второй подход примитивен. Администратор почтовой машины раз и навсегда определяет, что клиентская машина с таким-то сетевым именем или адресом работает в кодировке, скажем, Windows 1251. И теперь вся корреспонденция, отправляемая с данной машины, считается представленной только в этой кодировке. А если у машины нет постоянного адреса, как обычно и бывает, а пользователь, соединяясь с провайдером, получает на время каждого сеанса динамический IP-адрес, но все равно обращается к своему почтовому серверу и почтовому ящику, то такое решение не работает. Я уж и не говорю о том, что с этой машины нельзя будет отправлять ничего другого.

    Выделенный виртуальный сервер. Давайте запустим на одной почтовой машине три-четыре почтовых сервера одновременно, по одному на каждую кодировку, и каждому серверу присвоим отдельное имя, например: win.mail.access.ru, alt.mail.access.ru, koi.mail.access.ru, iso.mail.access.ru. Предложим пользователям Windows обращаться за своей почтой на сервер win.mail.access.ru, пользователям DOS - на alt.mail.access.ru и т. д. Клиенту достаточно при конфигурации своей почтовой программы правильно указать адрес почтовой машины. Причем в этом случае, разделив уходящий SMTP-поток и приходящий POP3 на разные кодировки, можно получить дополнительную гибкость. Предположим, что Netscape, как было сказано выше, принудительно переводит Windows 1251 в KOI8-R, а обратного процесса не производит. Тогда мы определяем в нем SMTP - KOI, а POP3 - Win, и, таким образом, исходящую корреспонденцию перекодирует Netscape, а входящую - сервер. Можно попробовать и другие цепочки с экзотическими адресатами - вариантов много. Это, на мой взгляд, самое правильное решение (если вообще что-то надо делать). Пользователь все равно должен проставить имя сервера, и не надо считать его таким глупым и не оставлять никакой свободы, как в предыдущем случае. И всегда можно зарезервировать вариант по умолчанию, который ничего не делает, а просто передает, как ему и положено. У меня именно такой провайдер. И я его хвалю не потому, что он мой, - а он мой, потому что так делает.

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

    Универсального решения сегодня в любом случае не существует. Даже тогда, когда пытаешься предусмотреть все. Из приведенного в конференции примера Григория Наумовца: "Недавно мне было нужно разослать одно сообщение на кириллице через mailing list нескольким десяткам людей с разными серверами (одни перекодируют КОИ8<->1251, другие нет) и мэйлерами (от Eudor'ы до Bmail'а). Думаю, надо сделать так, чтобы кириллица у всех была сразу же видна без переключения фонтов или кодировок. Поэтому включаю в письмо четыре куска: (1) English, (2) КОИ8, (3) 1251 и (4) такой, который должен превратиться в КОИ8 в случае перекодировки POP-сервером или софтом получателя по таблице КОИ8->1251. Ну и? Все равно от одного из Dmail-овских адресатов пришел ответ: "не могу прочесть письмо, так как в нем нет строки begin" (???). Оказывается, один серверок по дороге оказался еще умнее меня и зачем-то закатал мое письмо в Base64".

    World Wide Web




    Содержание  Назад  Вперед