Hostage
Newbie | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Уж и не знаю сюда или в системное администрирование.. где то на стыке, наверно. Помогите, братцы. Док с манами перекурил уже многа-многа, а просветления не наступило. FreeBSD 9.2. Русская UTF-8 локаль. exim-4.80.1-2. PHP 5.4.20. nginx, php-fpm (с веб вызова и с консольного вызова php script.php ситуация аналогична) <?php $to = "user@mail.me"; $subject = "subject"; $headers = "Content-Transfer-Encoding: 8bit\nContent-type: text/plain; charset=UTF-8\nFrom: <noreply@mail.me>"; $message = "а"; // тут русская маленькая буква "а" в utf-8, то есть 0xD0B0 в кодах mail($to, $subject, $message, $headers); ?> Приходит по почте "а" или 0xC390C2B0 в кодах. Дело не в почтовом клиенте, смотрю напрямую текст в INBOX на почтовом сервере-получателе, там та же байтовая последовательность. cat test.txt | mail user@mail.me, где в test.txt русский UTF-8 приходит нормально, то есть видимо дело не в почтовике, а в недрах php или функции mail() происходит ещё одно конвертирование, два байта превращаются в 4. Почему-зачем? Моск сломал. default_charset = "UTF-8" в php.ini ставил. И убирал. Как победить? Добавлено: *upd* хм. движок подпарсил код.. "а" - так будет? приходит это... а каким то перекодировщиком расковырял, что текст таки читается если его преобразовать ISO-8859-1 → UTF-8. То есть php берёт текст в UTF-8 и конвертит его в ISO-8859-1. С какого перепугу? |