mb_detect_encoding无法正常使用Windows-1250(CP1250)

Pio*_*ski 2 php encoding cp1250

我在mb_detect_encoding()中检测CP1250时遇到问题,在我的情况下我想要检测3个编码:

mb_detect_encoding($string, 'UTF-8,ISO-8859-2,Windows-1250')
Run Code Online (Sandbox Code Playgroud)

但Windows不支持编码,任何解决方案?

Jon*_*Jon 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,编码检测将始终失败.

结论:

  1. 要求检测ISO-8859-2是没有意义的; 它会一直告诉你"是的,就是这样"(除非它首先检测到UTF-8).
  2. 不支持Windows-1250,但即使它可以像ISO-8859-2一样工作.

通常,不可能准确地检测单字节编码.如果您发现自己需要在PHP中执行此操作,则需要手动执行此操作; 不要期待非常好的结果.