1
0
mirror of https://github.com/php/doc-zh.git synced 2026-04-24 08:38:08 +02:00
Files
Dai Jie dc288ed1e1 Sync with En
git-svn-id: https://svn.php.net/repository/phpdoc/zh/trunk@341691 c90b9560-bf6c-de11-be94-00142212c4b1
2017-01-19 14:18:33 +00:00

118 lines
3.2 KiB
XML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: 95bdd6883b5dde9504701777ba81b3c5f15df52b Maintainer: daijie Status: ready -->
<!-- Reviewed: no -->
<chapter xml:id="mbstring.http" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>HTTP 输入和输出</title>
<para>
HTTP 输入/输出字符编码转换同样也适用于二进制数据。
如果 HTTP 输入/输出用到了二进制数据,用户应当控制字符的编码转换。
</para>
<note>
<para>
如果 HTML 表单的 <literal>enctype</literal> 属性设置为 <literal>multipart/form-data</literal>,并且 &php.ini; 里的 <literal>mbstring.encoding_translation</literal> 设置为 On
POST 的变量以及上传文件的名称也将会被转换到内部字符编码。
不过,转换不会应用于查询(query)的键。
</para>
</note>
<para>
<itemizedlist>
<listitem>
<simpara>
HTTP 输入
</simpara>
<para>
在 PHP 脚本里无法控制 HTTP 输入字符的转换。
要禁用 HTTP 输入字符的转换,必须要在 &php.ini; 里设置。
<example>
<title>
&php.ini; 中禁用 HTTP 输入转换
</title>
<programlisting role="php.ini">
<![CDATA[
;; 禁用 HTTP 输入转换
mbstring.http_input = pass
;;禁用 HTTP 输入转换
mbstring.encoding_translation = Off
]]>
</programlisting>
</example>
</para>
<para>
当 PHP 以 Apache 模块运行。这些设置还可以通过 &httpd.conf; 内每个虚拟主机(Virtual Host)指令或每个目录下的 &htaccess; 来覆盖(override)。
详情参见<link
linkend="configuration">配置</link>这一节,以及 Apache 手册。
</para>
</listitem>
<listitem>
<simpara>
HTTP 输出
</simpara>
<para>
输出字符编码转换的使用有几种方式。
一种是使用 &php.ini;,另一种是使用 <function>ob_start</function>,以 <function>mb_output_handler</function> 作为 <literal>ob_start</literal> 的回调函数。
</para>
</listitem>
</itemizedlist>
</para>
<para>
<example>
<title>&php.ini; 设置例子</title>
<programlisting>
<![CDATA[
;; 为所有 PHP 页面启用输出字符编码的转换
;; 启用输出缓冲
output_buffering = On
;; 设置 mb_output_handler 来进行输出的转换
output_handler = mb_output_handler
]]>
</programlisting>
</example>
</para>
<para>
<example>
<title>脚本例子</title>
<programlisting role="php">
<![CDATA[
<?php
// 仅为此页面启用输出字符编码的转换
// 设置 HTTP 输出字符编码为 SJIS
mb_http_output('SJIS');
// 开始缓冲并指定 "mb_output_handler" 为回调函数
ob_start('mb_output_handler');
?>
]]>
</programlisting>
</example>
</para>
</chapter>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->