PHP中的iconv()和mb_convert_encoding()有什么区别?

T. *_*nes 52 php character-encoding special-characters

PHP iconv()mb_convert_encoding()PHP 之间的区别是什么?一个人表现得更好,更快,等等(例如,使用特定的编码)?在什么情况下,一个人比另一个人更受欢迎?

这是我认为我已经知道的:

的iconv()

  1. 包含大多数PHP安装.
  2. 当找到无法映射到新字符集的字符时,您可以指定它们是否转换为"相似"字符,或者忽略.

mb_convert_encoding()

  1. 通常需要安装php-mbstring扩展.
  2. 能够处理HTML-ENTITIES,转换为和来自Web十六进制代码.

还有其他差异吗?

pel*_*lle 28

iconv()它只是iconv()在运行PHP的系统C库中找到的函数的包装器(除非PHP是使用GNU iconv构建的,在这种情况下使用GNU iconv).因此,性能和功能iconv()取决于您运行PHP的位置以及它的构建方式.

的实施mb_convert_encoding(),在另一方面,被包括在PHP(模块)源.它包含一个名为libmbfl的库,用于处理实际的转换.因此,无论您在何处运行PHP,它的工作方式都相同.这里有一个支持的编码列表:http://php.net/manual/en/mbstring.encodings.php

总而言之,mb_convert_encoding()如果您想支持不同的平台,我想您可以说使用它更可靠.但是,如果您iconv()在Linux上使用(例如),那么它支持更多编码(请参阅参考资料iconv --list).

iconv()显然,功能的相对性能还取决于具体的实现.

  • [iconv](http://php.net/manual/en/function.iconv.php)有`// TRANSLIT`和`// IGNORE`选项来处理不可转换的字符..阅读[iconv]( http://php.net/manual/en/function.iconv.php)对`// IGNORE`问题的评论将导致您的代码抛出E_NOTICE错误.[mb_convert_encoding](http://php.net/manual/en/function.mb-convert-encoding.php)只能删除带有`ini_set('mbstring.substitute_character','none');`的无效字符. mbstring.substitute_character](http://php.net/manual/ru/mbstring.configuration.php)) (7认同)