Ваш контент ‘ISO-8859-1’, вероятно, на самом деле не соответствует ISO-8859-1.
Когда вы говорите Content-Type: text/html; charset=iso-8859-1
, браузеры фактически не используют ISO-8859-1, из-за досадных исторических причин. Они действительно используют кодовую страницу Windows 1252 (западноевропейская), которая очень похожа на ISO-8859-1, но не идентична.
В частности, байты в диапазоне 0x80-0x9F представляют невидимые и редко используемые управляющие коды в ISO-8859-1. Но cp1252 добавляет некоторые типографские тонкости и другие расширения в этот диапазон, включая «умные цитаты». Когда вы пишете апостроф в MS Word, он заменяет его на одну левую умную кавычку ’
, поэтому часто возникают проблемы с кодированием текста, который был первоначально напечатан в Word и других приложениях Office.
Для преобразования cp1252 в UTF-8 вам придется использовать iconv('cp1252', 'utf-8', $somestring)
вместо utf8_encode
, который привязан к «реальному» ISO-8859-1.