Last 5.3 release ever available: PHP 5.3.29 - 5.3 now EOL

HTTP 输入和输出

HTTP 输入/输出字符编码转换同样也适用于二进制数据。 如果 HTTP 输入/输出用到了二进制数据,用户应当控制字符的编码转换。

Note:

在 PHP 4.3.2 或更早的版本里该功能存在一个限制:当 form 表单元素的 enctype 属性设置为 multipart/form-data 时,mbstring不会对 POST 数据执行字符编码的转换。 所以在这种情况下,必要时需要你自己转换传入的数据。

自 PHP 4.3.3 起,如果 HTML 表单的 enctype 属性设置为 multipart/form-data,并且 php.ini 里的 mbstring.encoding_translation 设置为 On, POST 的变量以及上传文件的名称也将会被转换到内部字符编码。 不过,转换不会应用于查询(query)的键。

  • HTTP 输入

    在 PHP 脚本里无法控制 HTTP 输入字符的转换。 要禁用 HTTP 输入字符的转换,必须要在 php.ini 里设置。

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

    ;; 禁用 HTTP 输入转换
    mbstring.http_input = pass
    ;;禁用 HTTP 输入转换 (PHP 4.3.0 或更高版本)
    mbstring.encoding_translation = Off

    当 PHP 以 Apache 模块运行。这些设置还可以通过 httpd.conf 内每个虚拟主机(Virtual Host)指令或每个目录下的 .htaccess 来覆盖(override)。 详情参见配置这一节,以及 Apache 手册。

  • HTTP 输出

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

Example #2 php.ini 设置例子

;; 为所有 PHP 页面启用输出字符编码的转换

;; 启用输出缓冲
output_buffering    = On

;; 设置 mb_output_handler 来进行输出的转换
output_handler      = mb_output_handler

Example #3 脚本例子

<?php

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

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

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

?>

add a note add a note

User Contributed Notes

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