我在mb_detect_encoding()中检测 CP1250 时遇到问题,在我的情况下,我想检测 3 个编码:
mb_detect_encoding($string, 'UTF-8,ISO-8859-2,Windows-1250')
但是 Windows 不支持编码,有什么解决方案吗?
我在mb_detect_encoding()中检测 CP1250 时遇到问题,在我的情况下,我想检测 3 个编码:
mb_detect_encoding($string, 'UTF-8,ISO-8859-2,Windows-1250')
但是 Windows 不支持编码,有什么解决方案吗?
mb_detect_encoding
总是“检测”单字节编码。您可以在以下文档中阅读mb_detect_order
:
mbstring 当前实现了以下编码检测过滤器。如果以下编码存在无效的字节序列,编码检测将失败。
UTF-8、UTF-7、ASCII、EUC-JP、SJIS、eucJP-win、SJIS-win、JIS、ISO-2022-JP
对于 ISO-8859-X,mbstring 始终检测为 ISO-8859-X。
对于 UTF-16、UTF-32、UCS2 和 UCS4,编码检测将始终失败。
结论:
一般来说,不可能准确地检测单字节编码。如果您发现自己需要在 PHP 中执行此操作,则需要手动执行;不要期望非常好的结果。
将 ISO-8859-2 与 Windows-1250 或任何其他单字节编码与任何其他编码区分开来是不可行的。mb_detect_encoding
只是为您提供对给定字符串有效的第一个编码,并且两者都同样有效。根据定义,“检测”编码不可能具有任何准确度。