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');

?>


Участник рейтинга Тэглайн 2010