繁体   English   中英

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

[英]What is the difference between iconv() and mb_convert_encoding() in PHP?

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

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

的iconv()

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

mb_convert_encoding()

  1. 通常需要安装php-mbstring扩展。
  2. 能够处理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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM