17

我试图弄清楚这些 php.ini 设置究竟做了什么。当它们设置为不同的值时会发生什么?什么时候需要?它们什么时候有害?

像往常一样,PHP 手册的帮助不大。

编辑:澄清一下,我了解字符编码是如何工作的,并且我了解 PHP 的多字节函数与它们的单字节函数有何不同。我正在寻找有关上述设置的详细信息。

编辑 2:好的,看起来他们确实提供了更多的文档,而不仅仅是运行时配置页面,它只有一行摘要。其中前三个具有类似名称的功能,并且在描述功能版本的页面上有更多详细信息。我在上面添加了链接。

编辑 3:添加赏金。我正在寻找有关这些设置的确切作用的具体细节,尤其是最后三个。他们从什么转换成什么,什么时候转换?

4

3 回答 3

7

您可以将 mbstring.language 更改为您使用的任何语言。(资源)

; language for internal character representation.
mbstring.language = Neutral ; Set default language to neutral(UTF-8) (default)
mbstring.language = English
mbstring.language = Japanese
mbstring.language = Korean  ;For Korean market later

http_input

; http input encoding.
mbstring.http_input = pass
mbstring.http_input = auto
mbstring.http_input = UTF-8
mbstring.http_input = UTF-8, SJIS, EUC-JP

http_output

; http output encoding. mb_output_handler must be
; registered as output buffer to function
mbstring.http_output = pass
mbstring.http_output = UTF-8

编码翻译

; enable automatic encoding translation accoding to
; mbstring.internal_encoding setting. Input chars are
; converted to internal encoding by setting this to On.
; Note: Do _not_ use automatic encoding translation for
;       portable libs/applications.
mbstring.encoding_translation = On
于 2009-11-07T00:47:47.983 回答
3

关键是支持不同的字符集编码。有多种编码(ASCII、ANSI、UTF-8 等),每种编码都有不同的字符集和每个字符的字节数。您查看的设置指定了不同 PHP 函数的默认编码。

PHP 提供了许多函数来帮助您正确处理这些不同的编码。有关说明,请查看 mb_strlen() 与 strlen()。

简短的回答是,除非您正在本地化应用程序的文本,或者与具有不同编码的系统(包括您的数据库!)进行通信,否则您可能不需要担心它。

于 2009-11-07T01:10:27.640 回答
2

我认为这个例子中的演示解释了一切:

http://fr2.php.net/manual/en/function.mb-internal-encoding.php#53265

虽然里面没有用到,但可以推断出mbstring.http_input.

于 2011-08-18T12:06:22.523 回答