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

PHP中的iconv()mb_convert_encoding()什么区别? 一个人performance更好,更快等(如使用特定的编码)? 在什么情况下会比另一个更受欢迎?

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

的iconv()

  1. 包含在大多数PHP的安装中。
  2. 当找不到映射到新字符集的字符时,可以指定是否将其转换为“相似”字符,或者忽略。

mb_convert_encoding()

  1. 通常需要安装php-mbstring扩展名。
  2. 能够处理HTML-ENTITIES ,转换为网页hex代码。

还有其他的区别吗?

iconv()只是在运行PHP的系统C库中find的iconv()函数的包装器(除非使用GNU iconv构buildPHP,在这种情况下使用GNU iconv)。 所以iconv()的性能和function取决于你在哪里运行PHP以及它是如何构build的。

另一方面, mb_convert_encoding()的实现包含在PHP(模块)源文件中。 它包含一个名为libmbfl的库,用于处理实际的转换。 因此无论您在哪里运行PHP,它的工作原理都是一样的。 这里有一个支持的编码列表: http : //php.net/manual/en/mbstring.encodings.php

所以,总之,如果你想支持不同的平台,我想你可以说mb_convert_encoding()更可靠。 但是,如果您在Linux上使用iconv() ,则它支持更多的编码(请参阅iconv --list )。

函数的相对性能还取决于具体的iconv()实现,显然。

自PHP 5.4以来有一个错误。 有时iconv会返回空string,而不是返回带有“相似”字符的string。

所以你应该使用mb_convert_encoding。