Что происходит, когда в адресе электронной почты появляется `=?iso8859-1?B?`...`?=`?

Я вижу такие вещи, как=?iso8859-1?B?...?=в адресах электронной почты. Я предполагаю, что это определено в каком-то RFC. Кто-нибудь может объяснить, где? Это якобы устарело сейчас, когда все в Unicode?

1 ответ

Это формат RFC 2047 «Закодированное слово», используемый в сообщениях электронной почты в формате MIME (т.е. практически во всех из них) для размещения 8-битных данных в 7-битном ASCII. Это не имеет ничего общего с HTTP GET или строками запроса.

Кодированное слово относится к заголовкам так же, как Content-Transfer-Encoding относится к телу сообщения: оба используют форматы Base64 или Quoted-Printable для преобразования 8-битных данных в 7-битные данные ASCII, и оба являются обычным явлением в сообщениях.

Однако обычно вы никогда не увидите такой закодированный текст в своем почтовом приложении (за исключением просмотра источника сообщения) — он всегда должен отображаться в расшифрованном виде в пользовательском интерфейсе. Если почтовое приложение показывает вам необработанное закодированное слово, то, скорее всего, оно не может быть правильно декодировано (например, отправитель указал неправильный набор символов).

Этот формат не устарел благодаря Unicode; он решает другую задачу и одинаково применим ко всем наборам символов. Действительно, вы часто будете видеть, что текст Unicode кодируется как=?utf-8?....

Однако оно может быть устаревшим из-за расширения SMTP «8BITMIME». Как и многие другие вещи, связанные с электронной почтой, он пришел из эпохи, когда некоторые сети не были «8-битными» и могли отбрасывать или искажать значение старшего бита – что уже не относится к современному программному обеспечению SMTP, работающему через TCP/IP.

Другие вопросы по тегам