Определение кодировки

qwelp

Новичок
Определение кодировки

Получаю темы писем с помощью imap_headerinfo. От mail.ru они приходят в кодировке KOI8-R, от rambler.ru приходят в windows-1251
Дело в том что все сообщения поступают в один список и какаято часть получается не в правильной кодировке . пробовал применить функцию iconv и она работает, но только в одну сторону.
Подскажите как можно решить эту проблему?
 

qwelp

Новичок
В списку идут темы и зависимости от кокого сервера они пришли отображаются в разных кодировках

1. бКЮДХЛХП аСМ
2. Нормальное отображение
 

qwelp

Новичок
Как нибудь можно принудительно строке задать кодировку?
 

ioleg

Новичок
qwelp

1. Т.е. в неправильной кодировке? Ты KOI8-R назвал неправильной?
2. Существуют 2-а типа передачи текста: text/plane и text/html и у них есть парамерт charset, где и указывается кодировка в которой данный текст прислан.
3. Лично я в своей почтовом скрипте использую convert_cyr_string() для изменения кодировки. Пока никаких проблем не было.
4. Рано тебе видимо писать свой скрипт разбора тела сообщения, поэтому возьми и посмотри как это делают бесплатные почтовые скрипты.
 

qwelp

Новичок
скрипт почти дописал с кодировками мало сталкивался. А у тебя хороший скрипт? может я куплю у тебя его?

-~{}~ 21.04.07 15:35:

convert_cyr_string переводит когда ты точно знаешь из какой в какую перевести, а у меня надо делать условия выбора.
извлекаю данные с помощью imap_headerinfo и применяю для для декода imap_mime_header_decode. с разных почтовых серверов приходят в разных кодировках и получается что половина сообщений в KOI8-R, а другая в windows-1251 и все это в одном списке если применяю convert_cyr_string или iconv то сообщения только от одного сервера становятся нормального вида. зависит от того какой схему я указываю
 

ioleg

Новичок
У тебя скрипт даже все кодировки трансфера и первичный тип тела предусматривает?

Если нет, могу подкинуть стабильный скритик. А вот про продать свой скрипт - отношусь крайне отрицательно.

Ясно, у тебя даже тело сообщения по-человечески не парсится, судя по тому, что ты дописал.
 

qwelp

Новичок
кодировка только в head. вот:

<head>
<meta http-equiv="Content-Type" content="text/html; windows-1251" />
</head>

если её изменяю то кодировка меняется в зависимости от какого сервера пришли письма.
функция imap_mime_header_decode помогает декодить заголовки и потом я сталкиваюсь с выше описанной проблемой

Если нет, могу подкинуть стабильный скритик
Не надо. лучше один раз и навсегда разберусь с этой темой.
 

ioleg

Новичок
qwelp
<head>
<meta http-equiv="Content-Type" content="text/html; windows-1251" />
</head>
Это уже тело сообщения! И никакого отношения к тому в какой кодировке хранится текст не имеет.
В каждом письме в каждой части есть:

Content-Type: text/plain; charset=windows-1251 //это указывает на то, что данная часть является простым текстом в кодировке windows-1251
Content-Type: text/html; charset=koi8-r //это указывает на то, что данная часть html в кодировке koi8-r

Я вот не понял, ты какую функцию используешь для чтения структуры сообщения?
 

qwelp

Новичок
Я читаю заголовки функцией imap_headerinfo, а не само тело письма. и вывожу fromaddress - Фамилия, имя и именно с этим проблема.
 

ioleg

Новичок
А, так ты еще не дошел до тела. :)

Ну и в чем тогда проблема?
Функция imap_mime_header_decode возвращает массив где:
$elements[$i]->charset - кодировка
$elements[$i]->text - текст в кодировке $elements[$i]->charset

Берем функцию convert_cyr_string($elements[$i]->text,$elements[$i]->charset,"w") и радуемся результату. :)
 

qwelp

Новичок
Все я понял. не знал что imap_mime_header_decode извлекает charset. спасибо разобрался. :)
 

NiGal

Новичок
Автор оригинала: qwelp
Все я понял. не знал что imap_mime_header_decode извлекает charset. спасибо разобрался. :)
Народ, я рад, что автор топа разобрался с проблемой, но к сожалению у меня возникла подобная.
А точнее, как определить кодировку, в которой приходит строка реферер??
проблема встала после того, как обнаружилось следующее:
если пользоваться простым поиском в ya то строка в CP1251 и все нормально,
но как только чел делает поиск в базе изображений, так сразу переходит на UTF-8

Что делать... можно тупо проверять на вхождение в реферер "yandex.ru" или "images.yandex.ru", но это как то... "по русски"... ведь у нас все через Ж

Спасибо за помощь в решении... заранее...
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
NiGal
Ну уж совсем похожий вопрос...
Поиск по форуму сломался?
 
Сверху