这些PHP mbstring设置有什么作用?

时间:2009-11-07 00:42:15

标签: php character-encoding multibyte mbstring

我正在试图找出这些php.ini设置的确切内容。当它们被设置为不同的值时会发生什么?什么时候需要?它们何时有害?

像往常一样,PHP manual不太有帮助。

编辑:为了澄清,我理解字符编码是如何工作的,我理解PHP的多字节函数与单字节函数的区别。我正在寻找上述设置的具体细节。

编辑2 :好的,看起来他们确实提供的文档比page on runtime configuration更多,而{{3}}只有一行摘要。前三个具有类似命名的功能,并且在描述功能版本的页面上有更多细节。我在上面添加了链接。

编辑3 :添加赏金。我正在寻找有关这些设置的具体细节,特别是最后三个。他们从哪里转换,以及何时转换?

3 个答案:

答案 0 :(得分:7)

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

语言

; 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

答案 1 :(得分:3)

重点是支持不同的字符集编码。有各种各样的编码(ASCII,ANSI,UTF-8等),每个编码都有不同的字符集和每个字符的字节数。您正在查看的设置为不同的PHP函数指定默认编码。

PHP提供了许多功能,可以帮助您正确处理这些不同的编码。有关说明,请查看mb_strlen()vs strlen()。

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

答案 2 :(得分:2)

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

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

虽然它没有使用,但您可以推断出mbstring.http_input的使用。