обзор XML-стандартов
Слушайте, дети, сказку: в давние-давние времена, когда Интернет звался Арпанетом и жил исключительно в Америке (и немножко в Англии), жили-были люди. И хотели те люди писать друг другу письма, но частенько друг друга не понимали, потому что не было в людях тех согласия: как же письма писать да передавать по сетям. Но в один прекрасный день объявился мужик, и звали его ... нет, не Иван-дурак, а Давид-Крокер. И написал он большую и сложную книжку, и звалась та книжка RFC822. Тут люди подивились да возрадовались, и сказали "Се есмь Бог (тьфу, то есть Стандарт, конечно), и Давид-Крокер - пророк его". Но сей пророк русскими буквами не владел, можно даже сказать - не знал о них ни хрена, вот оттого Стандарт и говорил: "Не используй 8-битных символов по субботам (ну и повсем остальным дням, конечно, тоже), а не то блудно тебе будет". С тех пор и повелось: кто ни сочинит программу, какая почту по Интернету туда-сюда гоняет (а зовется та программа SMTP-сервер, а почему - тайна сия велика есть и пребудет таковой во веки веков, аминь!), не пропускает программа 8-битных символов, только улыбается загадочно да Давид-Крокера цитирует, не к ночи будь помянут.
Шло время... И в один прекрасный день повадились шастать по Интернету хитропопые хренцузы, и сказали те хренцузы: "Не мыслим мы себя без апострофов своих и многих разных ударениев над буквами. Не хотим писать по-англицки, да и не знаем мы по-вашенски, по-басурмански. У нас и свой язык имеется, весь из себя местами восьмибитный". И придумали для тех хренцузов Стандарт другой, и назвали его, в насмешку над ними, по-англицки, непонятно: Quoted-Printable. Хренцуз как вставит в письмо свое какой символ неудобочитаемый, Quoted-Printable его хрясь - и в семибитный вид кодирует, а уж тогда, понятно, и SMTP-сервер не возражает, Давид-Крокера не цитирует и загадочно не улыбается. Пашет, родимый.
И все было хорошо и здорово, пока в ничем прочим не примечательном тысяча девятьсот волосатом году прошлого тысячелетия не появился в Интернете Иван-дурак. Сами понимаете, дурак - ну что с него взять. Языкам, гад, не обучен, Стандарт не чтит - восьмому биту, еретик, поклоняется. Задумались тут спесьялисты заморские: что тут делать, как тут быть? У Ивана-то дурака кодировок множество великое, он и сам точного счета им не знает - ну как такого понять. Припомнили и "загадочную душу", и маму ее - а не выходит каменный цветок, хоть ты тресни. Не желает Иван-Дурак Quoted-Printable пользоваться, говорит: "У меня все буквы - восьмибитные, где уж мне". И то правда: Quoted-Printable и страдает, и мучается, а как ни кодируй - все одно, получается у него аж в три раза длиннее, чем Иван-дурак написал, а главное - непонятно все, не прочитать никак. Вначале думали, конечно, от Ивана отвязаться, придумали еще какой-то Base64, который, вроде, не так уж чтобы и письма Ивановы оченно удлинял, да Иван все никак не уймется. И явились-не запылились новые пророки тогда, именами Фрид да Боренштейн, и явили миру Новый Завет (тьфу, то есть Стандарт, конечно, что это я?), чудесным образом свыше данный, RFC2045 именем, и сказали "Да будет с вами бит восьмой! Вкушайте его, плодитесь да размножайтесь, а бОльшего не просите" - и посмотрели со значением на китайцев: "А вы, черти узкоглазые, о своих иероглифах и не вспоминайте даже, а то мы на вас Unicode напустим, не помилуем". И устрашились китайцы, и познали страх Стандартов.
И настало время для новых SMTP-серверов, тех, что и ныне с нами, а они восьмой бит любят, холят и лелеют, Давид-Крокера не цитируют. И все бы было хорошо да здорово, но есть еще в мире SMTP-серверы старозаветные, не принимают они восьмой бит, только улыбаются в ответ загадочно. Да и среди SMTP-серверов новозаветных иной нет-нет, да старое помянет: возьмет, да и втихую письмо-то перекодирует. Какой в Base64, а какой и вовсе в Quoted-Printable. Перекодирует, да и припишет: "Вот, мол, перекодировал тут я вашу писанину, авось целее будет." Подавитесь, мол. С тем и Давид-Крокера поминают, и маму его партизанскую.
Вот и оказался Иван-дурак перед камнем дорожным, а на камне том надпись: "Налево пойдешь - Quoted-Printable тебя закодирует, себя не узнаешь. Направо пойдешь - Base64 тебя в сети свои уловит, никто тебя не узнает: маленький будешь да загадочный. Прямо пойдешь - станешь жить-поживать да добра наживать, но ПОМНИ: иной раз поймают тебя, улыбнутся загадочно, Давид-Крокера процитируют да вырвут язык твой поганый: то ли щипцами калеными, то ли Quoted-Printable, то ли Base64 в извращенной форме". И летает над камнем тем Мышь Летучая, и днем, и вечером, и ночью, само собой. Кругами летает, думу о Стандарте думает да русским языком говорит, по-разному по-всякому его кодируя.
Тут и сказочке конец, а кто слушал - молодец.
Александр Киселев, впервые опубликовано на НО Bat! ("НеОфициальный ВАТ).
Сетевые решения. Статья была опубликована в номере 05 за 2004 год в рубрике технологии