PHP中的iconv()和mb_convert_encoding()有什么区别?
PHP中的iconv()
和mb_convert_encoding()
什么区别? 一个人performance更好,更快等(如使用特定的编码)? 在什么情况下会比另一个更受欢迎?
这是我认为我已经知道的:
的iconv()
- 包含在大多数PHP的安装中。
- 当找不到映射到新字符集的字符时,可以指定是否将其转换为“相似”字符,或者忽略。
mb_convert_encoding()
- 通常需要安装php-mbstring扩展名。
- 能够处理
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。