mirror of
https://github.com/php/doc-zh.git
synced 2026-04-24 08:38:08 +02:00
dc288ed1e1
git-svn-id: https://svn.php.net/repository/phpdoc/zh/trunk@341691 c90b9560-bf6c-de11-be94-00142212c4b1
118 lines
3.2 KiB
XML
118 lines
3.2 KiB
XML
<?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
|
||
-->
|
||
|