我读过维基百科关于Windows-1252字符编码的文章。对于字节值<&lt;的字符。 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”参数(具有相当无用的文档)不会做任何事情。
答案 0 :(得分:2)
windows-1252
不支持编码检测。根据{{3}}文档:
mbstring目前实现以下编码检测 过滤器。如果以下内容存在无效的字节序列 编码,编码检测将失败。
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,编码检测将始终失败。