Symfony Mailer/Mime 8.0: Тема UTF-8 повреждается (C3 B6 → C3 3F) во время кодирования заголовкаPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Symfony Mailer/Mime 8.0: Тема UTF-8 повреждается (C3 B6 → C3 3F) во время кодирования заголовка

Сообщение Anonymous »

Я вижу что-то похожее на повреждение UTF-8 в заголовке Тема при использовании Symfony Mailer / Mime 8.0.x с PHP 8.4.
Признаки:

Умлауты и другие многобайтовые символы частично заменены на ? в закодированном заголовке Темы (например, ö → =?utf-8?Q?=C3=3F?=), даже если входная строка действительна в формате UTF-8 и объект сообщения содержит правильные данные перед кодированием заголовка.
Среда Входные данные (проверенный UTF-8)
Шестнадцатеричные дампы частей темы перед вызовом $message->subject():

Код: Выделить всё

db heading:
45697365726b756368656e202d2057616666656c68c3b6726e6368656e206d6974205361686e65
"Eiserkuchen - Waffelhörnchen mit Sahne"

piece (heading + emoji):
45697365726b756368656e202d2057616666656c68c3b6726e6368656e206d6974205361686e6520f09f8db420
"... Waffelhörnchen mit Sahne 🍴"
Второй заголовок:

Код: Выделить всё

db heading:
506cc3a4747a6368656e2d52657374652d4b756368656e3a2052657a657074207a757220506cc3a4747a6368656e76657277657274756e67
"Plätzchen-Reste-Kuchen: Rezept zur Plätzchenverwertung"
Последняя тема перед тем, как задать ее в сообщении:

Код: Выделить всё

subject before set:
45697365726b756368656e202d2057616666656c68c3b6726e6368656e206d6974205361686e6520f09f8db420506cc3a4747a6368656e2d52657374652d4b756368656e3a2052657a657074207a757220506cc3a4747a6368656e76657277657274756e67
Это допустимый код UTF-8 (, c3 a4, emoji f0 9f 8d b4).

Результирующий закодированный заголовок темы
После вызова:

Код: Выделить всё

$message->subject($subject);
Symfony производит:

Код: Выделить всё

Subject: Eiserkuchen - =?utf-8?Q?Waffelh=C3=3Frnchen?= mit Sahne
=?utf-8?Q?=F0=9F=8D=B4=3FPl=C3=3Ftzchen-Reste-K?=
=?utf-8?Q?uchen=3A?= Rezept zur
=?utf-8?Q?Pl=C3=3Ftzchenverwertuntzchenverwertung?=
Обратите внимание: Только байты продолжения UTF-8 (

Код: Выделить всё

0x80–0xBF
) заменяются на ?.
Наблюдения
  • Объект сообщения содержит правильную кодировку заголовка UTF-8 before.
  • Код: Выделить всё

    Email::toString()
    показывает тот же поврежденный закодированный заголовок.
  • Увеличена длина строки заголовка (

    Код: Выделить всё

    setMaxLineLength(998)
    ) не меняет поведение.
  • Принудительное использование RFC-2047 кодировки Base64 (B) вручную работает правильно:

Код: Выделить всё

$encoded = '=?UTF-8?B?' . base64_encode($subject) . '?=';
$headers->remove('Subject');
$headers->addTextHeader('Subject', $encoded);
Вопрос
Известна ли это проблема или регресс в Symfony Mime 8.0.x при Q-кодировании неструктурированных заголовков с помощью многобайтовых символов UTF-8 (особенно эмодзи + умлауты)?
Или мне не хватает необходимой конфигурации/шаблона использования для Email::subject() в Symfony 8?
Прежде чем подавать официальный отчет об ошибке, мы будем признательны за любые рекомендации или подтверждения.

Подробнее здесь: https://stackoverflow.com/questions/798 ... f-during-h
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»