根据 bin2hex,我的 PHP 在内部使用 UTF-8:
echo bin2hex("ö"); -> c3b6 (utf-8)
echo bin2hex(utf8_decode("ö")); -> f6 (ISO-8859)
但是 mb_internal_encoding() 和 iconv_get_encoding() 都说它是 ISO-8859-1。
echo mb_internal_encoding(); -> ISO-8859-1
var_dump(iconv_get_encoding()); -> ["input_encoding"]=> string(10) "ISO-8859-1" ["output_encoding"]=> string(10) "ISO-8859-1" ["internal_encoding"]=> string(10) "ISO-8859-1"
UTF-8 似乎显然是它使用的那个,但为什么它仍然显示 ISO-8859-1?
最佳答案
这一点也不奇怪。您的第一个检查是引号之间的内容。我假设您已使用 UTF-8保存 文件,这意味着您的字符串中有两个字节。这并不意味着内部编码是 UTF-8,只是字符串中有这两个字节。
关于PHP内部编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12710842/