Iconv_mime_encode подтверждает уже установленные кодировки?

У меня проблемы с получением iconv_mime_encode для использования уже установленных кодировок.

iconv_set_encoding('internal_encoding', 'utf-8');
iconv_set_encoding('input_encoding',    'utf-8');
iconv_set_encoding('output_encoding',   'iso-8859-1');

$string = "hétérogène";

$a_prefs = array(
'scheme' =>         'Q',
'line-length' =>    500);

echo iconv_mime_encode('Subject', $string, $a_prefs);

-> Subject: =?utf-8?Q?h=C3=A9t=C3=A9rog=C3=A8ne?=

Результат был utf8, когда я хотел iso-8859-1.

$a_prefs = array(
'scheme' =>             'Q',
'line-length' =>        500,
'output-encoding' =>    'iso-8859-1');

echo iconv_mime_encode('Subject', $string, $a_prefs);

-> Subject: =?iso-8859-1?Q?h=E9t=E9rog=E8ne?=

Здесь результат в порядке, но я подумал, что не нужно явно задавать кодировку вывода.
Я не прав или это ошибка php?

1

Решение

Это выглядит очень неправильно, но это задокументировано: Если вы не установите output-encoding в preferences массив, он возвращается к iconv.internal_encoding, вместо iconv.output_encoding,

Глядя через iconv функции, похоже, что все они используют внутреннюю кодировку в качестве запасного значения; ни один из них не использует выходную кодировку.

Кстати, с PHP 5.6 все iconv.*_encoding настройки устарели, default_charset вместо этого будет использоваться настройка по умолчанию.

0

Другие решения

Как вы можете прочитайте в руководстве, по умолчанию для выходной кодировки в iconv_mime_encode является iconv.internal_encodingне iconv.output_encoding,

output-charset string Указывает набор символов, который будет использоваться для составления заголовка MIME. iconv.internal_encoding UTF-8

КСТАТИ: все 3 настройки осуждается в PHP 5.6

1

Я мог бы прочитать документацию еще раз, но я бы все равно неправильно прочитал ту часть, в которой выходная кодировка по умолчанию основана на внутреннем коде.

Спасибо.

0
По вопросам рекламы [email protected]