PHP内部编码

Zul*_*kis 5 php encoding

根据bin2hex我的PHP在内部使用UTF-8:

echo bin2hex("ö"); -> c3b6 (utf-8)
echo bin2hex(utf8_decode("ö")); -> f6 (ISO-8859)
Run Code Online (Sandbox Code Playgroud)

但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"
Run Code Online (Sandbox Code Playgroud)

UTF-8似乎显然是它正在使用的那个,但为什么它仍然显示ISO-8859-1?

Emi*_*röm 7

这一点都不奇怪.您的第一次检查是报价之间的内容.我假设您使用UTF-8 保存了文件,这意味着您的字符串中有两个字节.这并不意味着内部编码是UTF-8,只是你在字符串中有这两个字节.