HTTP 输入和输出

HTTP 输入/输出字符编码转换也可能转换二进制数据。如果二进制数据用于 HTTP 输入/输出,用户应该控制字符编码转换。

注意:

如果 HTML 表单的 enctype 设置为 multipart/form-data 并且 mbstring.encoding_translationphp.ini 中设置为 On,则 POST 变量和上传文件的名称也将被转换为内部字符编码。但是,转换不适用于查询键。

  • HTTP 输入

    无法从 PHP 脚本控制 HTTP 输入字符转换。要禁用 HTTP 输入字符转换,必须在 php.ini 中进行。

    示例 #1 在 php.ini 中禁用 HTTP 输入转换

    ;; Disable HTTP Input conversion
    mbstring.http_input = pass
    ;; Disable HTTP Input conversion
    mbstring.encoding_translation = Off

    当将 PHP 用作 Apache 模块时,可以在 httpd.conf 中每个虚拟主机指令中或通过 .htaccess 针对每个目录覆盖这些设置。有关详细信息,请参阅 配置 部分和 Apache 手册。

  • HTTP 输出

    有几种方法可以启用输出字符编码转换。一种是使用 php.ini,另一种是使用 ob_start() 以及 mb_output_handler() 作为 ob_start 回调函数。

示例 #2 php.ini 设置示例

;; Enable output character encoding conversion for all PHP pages

;; Enable Output Buffering
output_buffering    = On

;; Set mb_output_handler to enable output conversion
output_handler      = mb_output_handler

示例 #3 脚本示例

<?php

// 仅为此页面启用输出字符编码转换

// 将 HTTP 输出字符编码设置为 SJIS
mb_http_output('SJIS');

// 开始缓冲并指定 "mb_output_handler" 作为
// 回调函数
ob_start('mb_output_handler');

?>

添加注释

用户贡献的注释

此页面没有用户贡献的注释。
To Top