Ввод и вывод HTTP
Механизм преобразования кодировок ввода/вывода HTTP также может конвертировать двоичные данные. Пользователи должны сами следить за процессом преобразования, если в качестве ввода/вывода HTTP передаются двоичные данные.
Замечание:
Если
enctype
в HTML-форме имеет значениеmultipart/form-data
, а значениеmbstring.encoding_translation
в php.ini установлено в On, переменные и имена загружаемых файлов в POST-запросах конвертируются во внутреннюю кодировку скрипта автоматически. Однако, это не относится к ключам запроса.
-
Ввод HTTP
Из PHP скрипта невозможно контролировать преобразование кодировки входящих через HTTP символов. Если нужно отключить автоматическую конвертацию для HTTP ввода, это можно сделать в php.ini.
Пример #1 Отключение преобразования кодировки HTTP ввода в php.ini
;; Отключение конвертации mbstring.http_input = pass ;; Отключение конвертации mbstring.encoding_translation = Off
Если PHP используется как модуль Apache, можно переопределить эти настройки в каждой директиве виртуального хоста в httpd.conf или для каждой директории с .htaccess. За дополнительной информацией обращайтесь в раздел Конфигурация и к руководству по работе с Apache.
-
Вывод HTTP
Есть несколько способов включить преобразование кодировки для выходных данных. Один из них - использование 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');
?>