Механизм преобразования кодировок ввода/вывода HTTP также может конвертировать двоичные данные. Пользователи должны сами следить за процессом преобразования, если в качестве ввода/вывода HTTP передаются двоичные данные.
Замечание:
Если enctype в HTML форме имеет значение multipart/form-data, а значение mbstring.encoding_translation в php.ini установлено в On, переменные и имена загружаемых файлов в POST запросах конвертируются во внутреннюю кодировку скрипта автоматически. Однако, это не относится к ключевым словам запроса.
Из PHP скрипта невозможно контролировать преобразование кодировки входящих через HTTP символов. Если нужно отключить автоматическую конвертацию для HTTP ввода, это можно сделать в php.ini.
Пример #1 Отключение преобразования кодировки HTTP ввода в php.ini
;; Отключение конвертации mbstring.http_input = pass ;; Отключение конвертации mbstring.encoding_translation = Off
Если PHP используется как Apache модуль, можно замещать эти настройки в каждой директиве Виртуального Хоста в httpd.conf или для каждой директории с .htaccess. За дополнительной информацией обращайтесь в раздел Конфигурация Руководства по работе с Apache.
Есть несколько способов включить преобразование кодировки для выходных данных. Один из них - использование php.ini, другой - использование функции ob_start() с mb_output_handler() в качестве callback-функции для ob_start.
Пример #2 Пример настройки php.ini
;; Включение преобразования кодировок выходных символов для всех PHP страниц ;; Включение буферизации выходных данных output_buffering = On ;; Определение mb_output_handler для включения конвертации вывода output_handler = mb_output_handler
Пример #3 Пример скрипта
<?php
// Включение преобразования кодировок выходных символов только для этой страницы
// Установка кодировки HTTP вывода в SJIS
mb_http_output('SJIS');
// Запуск буферизации и определение "mb_output_handler" как
// callback-функции
ob_start('mb_output_handler');
?>