Давайте посмотрим, как значения, которые вы упоминаете, находятся на уровне байтов.
Я скопировал æøå
из вашего вопроса и �
из вашего заголовка. Причина для �
заключается в том, что мне пришлось использовать консольное приложение Windows для получения заголовка вашего вопроса, и его кодовая страница была Windows 1252 (при копировании из браузера мне Unicode Character 'REPLACEMENT CHARACTER' (U+FFFD)
).
В скрипте, закодированном в UTF-8, это дает:
<?php
$s = 'æøå';
$s2 = '�';
echo "s iso-8859-1 ", @reset(unpack("H*", mb_convert_encoding($s, "ISO-8859-1", "UTF-8"))), "\n";
echo "s2 win-1252 ", @reset(unpack("H*", mb_convert_encoding($s, "WINDOWS-1252", "UTF-8"))), "\n";
s iso-8859-1 e6f8e5
s2 win-1252 e6f8e5
Итак, представление байтов совпадает. Проблема в том, что когда вы пишете æøå
либо:
- Вы пишете это в ISO-8859-1 вместо UTF-8. Проверьте свой текстовый редактор.
- Значение переводится из UTF-8 в ISO-8859-1 (маловероятно)