В поиске Google я нашел http://algorytmy.pl/doc/php/ref.mbstring.php, в котором упоминается
Начиная с PHP 4.3.3, если для enctype для формы HTML задано значение multipart / form-dataи mbstring.encoding_translation
установлен на Вкл в php.ini
переменных POST и имена загруженных файлов также будут преобразованы во внутреннюю кодировку символов.Тем не менее, преобразование не применяется к ключам запроса.
Это не очень много значит для меня, но в нем упоминаются переменные POST, которые, кажется, суть проблемы.
Я обнаружил, что если я установлю это на своем виртуальном хосте Apache, я смогу воспроизвести вашу проблему:
php_admin_value mbstring.language "Neutral"
php_admin_value mbstring.encoding_translation "On"
php_admin_value mbstring.http_input "UTF-8"
php_admin_value mbstring.http_output "UTF-8"
php_admin_value mbstring.detect_order "auto"
php_admin_value mbstring.substitute_character "none"
php_admin_value mbstring.internal_encoding "UTF-8"
php_admin_value mbstring.func_overload "7"
php_admin_value default_charset "UTF-8"
Для справки, это была тестовая страница php, которую я использовал для воспроизведения проблемы:
<code><!DOCTYPE html>
<html>
<head>
</head>
<body>
<pre><?php echo $_POST['test'];?>
Используемая тестовая строка: iñtërnâtiônàlizætiøn
Я попытался закомментировать следующую настройку mbstring (или отключить ее):
; Disable HTTP Input conversion (PHP 4.3.0 or higher)
mbstring.encoding_translation = Off
Это кажетсячтобы решить проблему, хотя для меня это не имеет особого смысла, потому что внутренняя кодировка равна utf-8 ??
Еще одна странность, которую я заметил, заключалась в том, что если я установлю эти mbstring
значений непосредственно в php.ini
(вместо виртуального хоста Apache), я не смог воспроизвести проблему с encoding_translation
, поэтому кажется, что проблема возникает только при использовании php_admin_value
?