Бонжур Стефан. Эта страница описывает симптом, который вы видите; один символ, превращающийся в два, означает, что ваши данные находятся в UTF-8, но отображаются с использованием 8-битного набора символов. Вообще говоря, PHPMailer понимает это правильно, поэтому вам нужно выяснить, в чем дело.
Если вы используете SMTPDebug = 2
, вы сможете увидеть отправляемое сообщение (используйте действительно короткое тело сообщения, например é?
, которое гарантированно только работает в UTF-8).
Убедитесь, что кодировка самого файла сценария также UTF-8 - добавление в него смайликов - хороший способ убедиться, что это так.
Проблема с диагностикой заключается в том, что вы обнаружите, что ваша ОС создает помехи - такие вещи, как копирование в буфер обмена, вероятно, изменят кодировки - поэтому способ справиться с этим - использовать функцию шестнадцатеричного дампа, которая позволяет вам проверять фактическую байтовые значения. Французский является одним из самых простых в обращении, потому что почти все символы будут обычными однобайтовыми ASCII-совместимыми символами, а символы с акцентом будет легче обнаружить. В PHP функция bin2hex()
сделает это.
У вас есть 2 опечатки: Debutoutput
должно быть Debugoutput
и fonction
должно быть function
- и это хорошее место для выгрузки шестнадцатеричных данных из:
$mail->Debugoutput = function($str, $level) {echo $str, "\n", bin2hex($str), "\n";};
Вот пример:
echo 'abc ', bin2hex('abc');
, что даст abc 616263
; каждый входной символ приводит к 2 шестнадцатеричным цифрам (1 байт) вывода. Если ваш ввод abé
и ваша кодировка ISO-8859-1, она будет выглядеть как abé 6162e9
, потому что é в этой кодировке e9
(в шестнадцатеричном формате). та же самая строка в UTF-8 будет выглядеть как abé 6162c3a9
, потому что é в UTF8 составляет c3a9
- два байта, а не только один. Изучение таких символов позволяет вам быть абсолютно уверенным, в каком наборе символов находятся данные - просто посмотреть на них не достаточно!
Итак, хотя я не могу точно сказать, где находится ваша проблема, надеюсь, у вас есть несколько лучших идей о том, как ее диагностировать.