I've read Wikipedia's article on Windows-1252 character encoding. For characters whose byte value is < 128, it should be the same as ASCII/UTF-8.
This makes sense:
php -r "var_export(mb_detect_encoding(\"\x92\", 'windows-1252', true));"
'Windows-1252'
A left curly apostrophe is detected properly.
php -r "var_export(mb_detect_encoding(\"a\", 'windows-1252', true));"
false
Huh? The letter "a" isn't Windows-1252?
My terminal, where I"m running this, is set to UTF-8. So that should be the same byte sequence as ASCII for the letter 'a'. For the sake of minimizing the variables, if I specify the right Windows-1252 byte sequence:
php -r "var_export(mb_detect_encoding(\"\x61\", 'windows-1252', true));"
false
Changing the "strict" parameter (which has pretty useless documentation) does nothing in these cases.