За последние 24 часа нас посетили 17603 программиста и 1590 роботов. Сейчас ищут 1450 программистов ...

Скрипт в UTF-8 не понимает кириллицу

Тема в разделе "Установка PHP", создана пользователем MCStan, 2 сен 2011.

  1. MCStan

    MCStan Активный пользователь

    С нами с:
    2 сен 2011
    Сообщения:
    6
    Симпатии:
    0
    Адрес:
    Россия, Великие Луки
    Доброго времени суток, господа и дамы. Сразу к делу.
    С помощью php-скрипта отправляю письмо на почту, но вместо кириллицы - китайские иероглифы. Сама страница и скрипт сохранены в UTF-8. Принудительно указана эта же кодировка. Если скрипт сохранить в win-1251, то все нормально. Подкиньте парочку мыслей. :?:
    PHP:
    1.  
    2. <?php
    3. header('Content-Type: text/plain; charset=UTF-8');
    4. header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
    5. header('Cache-Control: no-store, no-cache, must-revalidate');
    6. header('Cache-Control: post-check=0, pre-check=0', FALSE);
    7. header('Pragma: no-cache');
    8. error_reporting(E_ALL ^ E_WARNING);
    9.  
    10. $address = '81.9.64.68';             // адрес smtp-сервера
    11. $port = 25;                                // порт
    12.  
    13. $login = '';                                // логин к ящику
    14. $pwd = '';                                 // пароль к ящику
    15.  
    16. $from = [email='pochta@mail.ru]'pochta@mail.ru[/email]';          // адрес отправителя
    17. $to = [email='mypochta@mail.ru]'mypochta@mail.ru[/email]';         // адрес получателя
    18.  
    19. $subject = 'Письмо';       // тема сообщения
    20. $message = "Организация - $org\r\n
    21. ФИО - $fio\r\n
    22. Должность - $post\r\n
    23. E-mail - $mail\r\n
    24. Телефон - $tel";          // текст сообщения
    25.  
    26. // Далее функции всякие
    27. // Далее функции всякие
    28. // Далее функции всякие
    29.  
    30. header('location: page.php'); //перенаправление
    31. exit();
    32. ?>
    33.  
     
  2. tommyangelo

    tommyangelo Старожил

    С нами с:
    6 дек 2009
    Сообщения:
    2.549
    Симпатии:
    0
    Адрес:
    Мариуполь
    PHP:
    1. <?
    2. function mail_utf8($to, $subject = '(Без темы)', $message = '', $header = '')
    3. {
    4.     $header_ = 'MIME-Version: 1.0' . "\r\n" . 'Content-type: text/html; charset=UTF-8' . "\r\n";
    5.  
    6.     if (!mail($to, '=?UTF-8?B?'.base64_encode($subject).'?=', $message, $header_ . $header)) return false;
    7.    
    8.     return true;
    9. }
     
  3. MCStan

    MCStan Активный пользователь

    С нами с:
    2 сен 2011
    Сообщения:
    6
    Симпатии:
    0
    Адрес:
    Россия, Великие Луки
    Кто-нибудь может мне объяснить почему заголовок письма (тема сообщения) приходят на сервак в нормальном виде, а текст сообщения в корявом. Из-за чего эта фигня происходит?
     
  4. MCStan

    MCStan Активный пользователь

    С нами с:
    2 сен 2011
    Сообщения:
    6
    Симпатии:
    0
    Адрес:
    Россия, Великие Луки
    ААА!!! Все получилось. Спасибо tommyangelo за умные мысли.
    Сделал так. Добавил эту строку:
    PHP:
    1.  
    2. $header = 'MIME-Version: 1.0' . "\r\n" . 'Content-type: text/html; charset=UTF-8' . "\r\n";
    3.  
    И в текст самого сообщения добавил этот заголовок:
    PHP:
    1.  
    2. $message = $header . $message;
    3.  
    Все оказалось так просто, а я голову ломал несколько дней. :D
    P.S. Модераторы, переместите тему в более подходящий для нее раздел.