![](/img/trans.png)
[英]PHP functions iconv(), mb_convert_encoding() can't convert KOI8-R to CP1251
[英]What is the difference between iconv() and mb_convert_encoding() in PHP?
PHP中的iconv()
和mb_convert_encoding()
什么区别? 一个人表现得更好,更快,等等(例如,使用特定的编码)? 在什么情况下,一个人比另一个人更受欢迎?
这是我认为我已经知道的:
的iconv()
mb_convert_encoding()
HTML-ENTITIES
,转换为Web十六进制代码和从Web十六进制代码转换。 还有其他差异吗?
iconv()
只是运行PHP的系统C库中找到的iconv()
函数的包装器(除非PHP是使用GNU iconv构建的,在这种情况下使用GNU iconv)。 因此, iconv()
的性能和功能取决于您运行PHP的位置以及它的构建方式。
另一方面, 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开始就有一个bug。 有时,iconv返回空字符串,而不是返回带有“相似”字符的字符串。
所以你应该使用mb_convert_encoding。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.