我读过维基百科关于Windows-1252字符编码的文章。 对于字节值<128 的字符,它应与 ASCII/UTF-8 相同。
这是有道理的:
php -r "var_export(mb_detect_encoding("x92", 'windows-1252', true));"
'Windows-1252'
正确检测到左卷曲撇号。
php -r "var_export(mb_detect_encoding("a", 'windows-1252', true));"
false
哼? 字母"a"不是Windows-1252吗?
我正在运行它的终端设置为 UTF-8。 因此,这应该是与字母"a"的 ASCII 相同的字节序列。 为了最小化变量,如果我指定正确的 Windows-1252 字节序列:
php -r "var_export(mb_detect_encoding("x61", 'windows-1252', true));"
false
在这些情况下,更改"strict"参数(其中包含非常无用的文档)没有任何作用。
windows-1252
不支持编码检测。 根据mb_detect_order文档:
MB字符串当前实现以下编码检测过滤 器。如果以下内容的字节序列无效编码,编码检测将失败。
UTF-8, UTF-7, ASCII,EUC-JP,SJIS, EUCJP-WIN, SJIS-WIN, JIS, ISO-2022-JP
对于 ISO-8859-,mbstring 始终检测为 ISO-8859-。
对于 UTF-16、UTF-32、UCS2 和UCS4,编码检测将始终失败。