HTTP Ввод и Вывод


Механизм преобразования кодировок ввода/вывода HTTP также может конвертировать двоичные данные. Пользователи должны сами следить за процессом преобразования, если в качестве ввода/вывода HTTP передаются двоичные данные.

Замечание:

В PHP 4.3.2 и более ранних версиях этот функционал ограничен. mbstring не конвертирует данные запроса POST, если атрибут enctype в элементе form имеет значение multipart/form-data. Таким образом, при необходимости, вы должны сами преобразовывать входные данные.

Начиная с PHP 4.3.3, если 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 ;; Отключение конвертации (PHP 4.3.0 или выше) 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');

?>