我在mb_detect_encoding()中检测CP1250时遇到问题,在我的情况下,我想检测3个编码:
mb_detect_encoding($string, 'UTF-8,ISO-8859-2,Windows-1250')
但Windows不支持编码,任何解决方案?
答案 0 :(得分:5)
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中执行此操作,则需要手动执行此操作;不要期待非常好的结果。
答案 1 :(得分:0)
将ISO-8859-2与Windows-1250或任何其他单字节编码区别开来是不可行的。 mb_detect_encoding
只是为您提供了第一个对给定字符串有效的编码,两者都同样有效。根据定义,“检测”编码不可能具有任何精确度。