According to bin2hex my PHP is internally using UTF-8:
echo bin2hex("ö"); -> c3b6 (utf-8)
echo bin2hex(utf8_decode("ö")); -> f6 (ISO-8859)
But both mb_internal_encoding() and iconv_get_encoding() say it is 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 seems to apparently be the one it’s using, but why is it showing ISO-8859-1 anyway?
This is not strange at all. Your first check is for what is between the quotes. I assume you have saved the file using UTF-8 which means you have two bytes in your string. This does not imply that the internal encoding is UTF-8, just that you have those two bytes in you string.