PHP中的iconv()和mb_convert_encoding()之间有什么区别?
PHP中的PHP中的iconv()和mb_convert_encoding()之间有什么区别?,php,character-encoding,special-characters,Php,Character Encoding,Special Characters,PHP中的iconv()和mb\u convert\u encoding()之间有什么区别?一个人是否表现得更好、更快等(如使用特定编码)?在什么情况下,一个会比另一个更受欢迎 以下是我认为我已经知道的: iconv() 包含在大多数PHP安装中 当发现无法映射到新字符集的字符时,可以指定是将其转换为“相似”字符,还是将其忽略 mb\u convert\u encoding() 通常需要安装php mbstring扩展 能够处理HTML-ENTITIES,在web十六进制代码之间进行转换 还有其
iconv()
和mb\u convert\u encoding()
之间有什么区别?一个人是否表现得更好、更快等(如使用特定编码)?在什么情况下,一个会比另一个更受欢迎
以下是我认为我已经知道的:
iconv()
HTML-ENTITIES
,在web十六进制代码之间进行转换iconv()
只是运行PHP的system C库中的iconv()
函数的包装(除非PHP是用GNU iconv构建的,在这种情况下使用GNU iconv)。因此,iconv()
的性能和特性取决于运行PHP的位置和构建方式
另一方面,mb\u convert\u encoding()
的实现包含在PHP(模块)源代码中。它包括一个名为libmbfl的库,用于处理实际转换。因此,无论您在哪里运行PHP,它都是一样的。此处有支持的编码列表:
总之,如果您想支持不同的平台,我想您可以说mb\u convert\u encoding()
更可靠。但是,如果在Linux上使用iconv()
(例如),那么它支持更多的编码(请参见iconv--list
)
显然,函数的相对性能还取决于特定的
iconv()
实现。因为PHP5.4存在一个bug。
有时iconv返回空字符串,而不是返回具有“相似”字符的字符串
因此,您应该使用mb_convert_编码。相关:不能说这些函数中的任何函数是否以及何时会给您带来问题,因为您没有分享您运行的具体问题。与任何类型的函数一样,它只做特定的工作。因此,如果你在工作中使用了错误的函数,你总是会遇到问题。OP没有询问他的具体情况,然后没有提供详细信息,以确定其情况下的首选功能;相反,他要求了解两个似乎执行相同功能的PHP函数之间的差异。当然,这就引出了一个问题:为什么它们都存在?在什么情况下,一个会比另一个更受欢迎?这在范围上是特定的,在适用性上也是广泛的(任何在PHP中进行字符转换的人都想知道这一点)。问题不应该以“非建设性”结束。
var\u dump(类似的文本('iconv','mb\u convert\u encoding'))
表示4
。所以答案是4
。。。我通过谷歌搜索来到这里,寻找完全相同的信息,结果却对问题被拒绝感到失望。我看不出有什么问题。有//translatit
和//IGNORE
选项来处理不可转换的字符。。阅读//忽略将使代码抛出错误的问题的注释。只能使用ini_集('mbstring.substitute_character','none')删除无效字符代码>(请参阅)@sania_Zol True,但这是因为您使用的是glibc的iconv()实现。从理论上讲,它在其他平台上的工作方式可能会有所不同,因为.iconv-l
for windowslink在这个bug上会有所帮助。我不认为这是PHP5.4 bug。当在生产服务器之间移动应用程序时,由于每个主机上的iconv
版本不同,会产生差异。