Вирішена

Не указана кодировка в заголовках сообщений от автоинформатора

Господа,
нужно указывать кодировку не только в заголовке письма, но и во всех служебных строках "Organization", "From" и "Subject", если там используется русский язык, а то ваши сообщения имеют нечитабельный вид (как на скриншоте)

/images/editor/88/3348570121.jpg?1338480416 (это Thunderbird)

/images/editor/fd/3348662038.jpg?1338480775 (а это -- веб-интерфейс, через браузер)
Соответственно, заголовки выглядят так (обратите внимание на выделенные строки -- в них не указана кодировка:

Message-Id:
Content-Type: text/plain; charset=Windows-1251
From: Ñåòü Ëà íåò
Reply-To: Ñåòü Ëà íåò
Organization: ÎÎÎ Ëà íåò Íåòâîðê
To: Ãà ðð³ Äèêèé
Subject: Óâåäîìëåíèå

X-Mailer: PHP/5.3.6
x-aol-global-disposition: S
X-AOL-SCOLL-SCORE: 0:5:69404216:93952408
X-AOL-SCOLL-URL_COUNT: 0
X-AOL-REROUTE: YES
x-aol-sid: 3039ac1d40ce4fc786851b71
X-AOL-IP: 194.50.85.2
X-AOL-SPF: domain : xobot.la.net.ua SPF : none

а правильно должно быть, например, вот так:

From: Andrey Zaborovsky
Newsgroups: ukr.nodes
Subject: Re: =?UTF-8?B?0JrRgNCw0YHQuNCy0L4g0LfQsNC60L7QvdGLINC/0YDQuNC90Lg=?=
=?UTF-8?B?0LzQsNGO0YLRgdGP?=
Date: Wed, 30 May 2012 23:39:57 +0300
Organization: =?UTF-8?B?0YDRg9GB0YHQutC40Lkg0LTQvtC8INGC0L7Qu9C10YDQsNC90YI=?=
=?UTF-8?B?0L3QvtGB0YLQuCDQuNC8LiDQodC+0L3QuCDQnNCw0YDQvNC10LvQsNC00L7QstC+?=
=?UTF-8?B?0Lk=?=
Lines: 25
Message-ID: <

Вот эта строка

Content-Type: text/plain; charset=Windows-1251

в заголовке вашего сообщения относится только к телу письма, но не относится к заголовкам, где нужно явно указывать кодировку в начале строки, если используется русский текст:

Subject: Re: =?UTF-8?B?0JrRgNCw0YHQuNCy0L4g0LfQsNC60L7QvdGLINC/0YDQuNC90Lg=?=
=?UTF-8?B?0LzQsNGO0YLRgdGP?=



Поправьте, а то сообщения от вас имеют достаточно странный вид даже в Тандерберде, умеющем достаточно хорошо справляться с кодировками без посторонней помощи :)

Возможно, в Outlook Express, который считает все неуказанные кодировки -- кодировкой win1251 по умолчанию, все отображается нормально, но в других, правильных :) почтовых клиентах с этим явно проблемы

Коментувати

Коментарі (11)

фото
1

На самом деле никогда с этим проблем не было, Thunderbird принимает корректно, я так понимаю у Вас какой то линукс.

Вот скриншот семерки для примера

/images/editor/2c/3465334784.png?1338936528

В общем на досуге попробуем поэкспериментировать с этим всем.

В том что вы говорите есть толк.

фото

Нет, машина с линукс у меня только дома (это ноутбук)

А скриншоты в исходном сообщении делались на самой обычной winXP с работы, причем второй скриншот -- это не тандерберд, а вообще веб-интерфейс AOL Mail (через браузер firefox)

Проблема, как я уже говорил, в следующем: если вы посмотрите на сообщения из стандартных виндовых почтовых клиентов, то увидите все корректно.

Но это вовсе не потому, что у вас все правильно, а потому что Майкрософт плюет на стандарты и считает неуказанную кодировку по умолчанию -- кодировкой win1251

В правильных же стандартах кодировку в служебных полях (Subject, From, Organization и т.д.) заголовка письма нужно указывать отдельно, но только тогда, когда там используется текст, отличный от латиницы (т.е. кириллица или что-то иное)

Если там латиница -- кодировку можно не указывать.

Чтобы убедиться, что это так -- посмотрите в groups.google.com заголовки сообщений в той же ukr.nodes :)

Ну или заголовки сообщений, рассылаемых Copiny, например вот заголовок уведомления

From: =?UTF-8?Q?Copiny_=28=D0=A0?= =?UTF-8?Q?=D0=B0=D0=B4=D0=B0_=D0=9B=D0=B0=D0=BD=D0=B5=D1=82=29?= To: andreyzaborovsky@aol.com Message-ID: Subject: =?UTF-8?B?0J7RhNC40YbQuNCw0LvRjNC90YvQuSDQvtGC0LLQtdGCINC6IA==?= =?UTF-8?B?0YLQtdC80LUgItCm0LjRhNGA0L7QstCw0Y8g0YLQtdC70LXQsg==?= =?UTF-8?B?0LjQt9C40L7QvdC90LDRjyDQv9GA0LjRgdGC0LDQstC60LAgRA==?= =?UTF-8?B?LUxpbmsgRElCLTExMCAoLTEyMCki?=

Как видите, все именно так, как я и говорю -- в строках заголовка сообщения кодировка указана отдельно -- в данном случае это UTF-8

/images/editor/91/3471854725.png?1338961996

фото

Наверно я отвык от шрифтов XP, мне показалось что это что то линуксовое.

На XP на моей памяти тоже в принципе проблем не замечалось.

В любом случае посмотрим.

фото

на самом первом скриншоте -- это шрифт Arial Narrow (не все его используют, но я к нему привык)

фото

Кстати, а проблема существовала всегда ?

фото

Насколько я помню, да.

Вот вам скриншоты -- слева Internet Explorer 7.0, справа -- Safari последней версии (5.1.7).

И там и там отображается криво.

/images/editor/12/3477330213.jpg?1338983386

Суть в том, что при правильных заголовках в сообщении, оно должно корректно отобразиться на компьютере с любой операционкой и любыми региональными настройками (хоть китайскими :) и любой кодировкой по умолчанию, установленной в системе).

А в вашем случае оно отображается корректно только на машинах с windows, только с кодировкой по умолчанию win1251 и только в определенных почтовых клиентах.

Поэтому вы и не замечали.

фото

Проверил только что на Suse linux 12.1 через наш web фейс mail.lanet.ua

Тоже все отображает корректно.

фото

вот, как и обещал

desktopbsd# uname -a

FreeBSD desktopbsd 6.3-RC2 FreeBSD 6.3-RC2 #18: Sun Jan 6 07:06:50 UTC root@tinderbox.3c-consulting.lokal:/usr/obj/usr/src/sys/DESKTOPBSDLIV

Mozilla/5.0 (X11; U; FreeBSD i386; en-US; rv:1.8.1.11) Gecko/20071223 Firefox/2.0.0.11

Понятное дело, это liveCD, поэтому я не настраивал видеокарту, это дефолтное разрешение экрана.

Как видите, все без изменений.

/images/editor/61/3481121377.png?1338998195

Собственно, по поводу ваших экспериментов с SuSE могу сказать следующее.

Сузи -- это Novel, а Новел всегда был дружен с Майкрософтом и в своем дистрибутиве мог что-то персонально допилить для большей совместимости с windows и ее кодировками (точнее, их автоматическим распознаванием)

Так, например, они всегда делали собственную сборку OpenOffice, которая также входит в дистрибутивы OpenSuSE

Здесь же, как видите, все точно так же, как в других случаях -- русский текст в вашем сообщении (я его выделил) -- не отображается.

Так что все, как в известном анекдоте: у нас пуля из ствола вылетела -- проблемы на вашей стороне :)

фото

Спасибо за подробные баг репорты.

Проблема есть, и похоже дело не в os или почтовых клиентах, дело в почтовых серверах где локаль по умолчанию явно не русская, там это все и проявляется. Проверил сам, заведя себе ящик на Aol и отправил туда уведомление.

Попробуем кодировать заголовки для полного феншуя.

Наверно все таки будем кодировать в 1251, так как база данных биллинга с которой подтягиваются данные в скрипт нотификатора работает в cp1251

фото

ну, собственно, не важно в какой кодировке оно будет кодироваться, важно, чтоб она была указана явно (даже, по идее, она может и не совпадать с кодировкой самого тела сообщения -- если она указана явно, то все должно отображаться корректно)

по поводу "нерусских" серверов -- у меня как-то с ними исторически сложилось еще со времен, когда бесплатные почтовые сервера были редкостью и все пользовались даже не гуглем, который был еще в зачаточном состоянии, а серверами типа @usa.net -- был давно-давно такой..

а продуктами от "национального производителя" (типа ukr.net) исторически не пользуюсь -- не доверяю :)

поэтому и заметил проблему :)