CascadiaPHP 2024

Ввод и вывод HTTP

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

Замечание:

Если для атрибута HTML-формы enctype установлено значение multipart/form-data, а для директивы mbstring.encoding_translation в файле php.ini установлено значение On, переменные и имена загружаемых файлов в POST-запросах конвертируются во внутреннюю кодировку скрипта автоматически. Однако это не относится к ключам запроса.

  • Ввод HTTP

    Невозможно контролировать преобразование символов HTTP-ввода из PHP-скрипта. Отключить преобразование символов HTTP-ввода можно в файле php.ini.

    Пример #1 Отключение преобразования кодировки HTTP-ввода в файле php.ini

    ;; Отключение конвертации
    mbstring.http_input = pass
    ;; Отключение конвертации
    mbstring.encoding_translation = Off

    Если PHP работает как модуль Apache, можно переопределить эти настройки в каждой директиве виртуального хоста (Virtual Host) в файле конфигурации httpd.conf или для каждой директории в файле .htaccess. Дополнительная информация дана в разделе «Конфигурация» и к руководству по работе с веб-сервером Apache.

  • Вывод HTTP

    Есть несколько способов включить преобразование кодировки символов вывода. Один из них — файл php.ini, другой — вызов функции ob_start() с передачей в ob_start функции mb_output_handler() в качестве callback-функции.

Пример #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');

?>

add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top