【问题标题】:What do these PHP mbstring settings do?这些 PHP mbstring 设置有什么作用?
【发布时间】:2010-12-14 01:40:59
【问题描述】:

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

像往常一样,PHP manual 没有什么帮助。

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

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

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

【问题讨论】:

  • 您是在讽刺手册没有帮助,对吧?
  • 我觉得很有帮助,作为PHP的手册。不过,您还需要了解 HTTP 和字符编码才能理解这些设置。而且 PHP 手册不是这些东西的手册。
  • 重新编辑 2:我认为类似名称的功能对您的问题没有太大帮助。例如, mb_language() 意味着它只影响电子邮件的编码,而我的印象是 mbstring.language 具有更广泛的影响。而mb_http_input()只是检测当前HTTP请求中数据的编码,并没有说明mbstring.http_input的设置是做什么的。

标签: php character-encoding multibyte mbstring


【解决方案1】:

您可以将 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

【讨论】:

  • mbstring.http_input 和 mbstring.http_output 自 PHP 5.6.0 起已被弃用。如果您使用的是 PHP >= 5.6.0,请改用“default_charset”指令。
【解决方案2】:

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

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

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

【讨论】:

    【解决方案3】:

    我认为这个例子中的演示说明了一切:

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

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

    【讨论】:

      猜你喜欢
      • 2021-08-06
      • 1970-01-01
      • 2010-11-28
      • 2015-07-04
      • 2011-12-31
      • 1970-01-01
      • 1970-01-01
      • 2019-02-12
      • 1970-01-01
      相关资源
      最近更新 更多