我在检测 CP1250 时遇到问题mb_detect_encoding() http://php.net/manual/en/function.mb-detect-encoding.php,就我而言,我想检测 3 种编码:
mb_detect_encoding($string, 'UTF-8,ISO-8859-2,Windows-1250')
但是Windows不支持编码,有什么解决办法吗?
mb_detect_encoding
always“检测”单字节编码。您可以在文档中阅读有关此内容的内容mb_detect_order http://php.net/manual/en/function.mb-detect-order.php:
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,编码检测将失败
总是。
结论:
- 要求检测ISO-8859-2是没有意义的;它总是会告诉你“是的,就是这样”(当然除非它首先检测到 UTF-8)。
- 不支持 Windows-1250,但即使支持,它的工作方式也与 ISO-8859-2 完全相同。
一般来说,不可能准确地检测单字节编码。如果您发现自己需要在 PHP 中执行此操作,则需要手动执行;不要期望有很好的结果。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)