Я хочу преобразовать html-объекты в UTF-8, но mb_convert_encoding
уничтожает уже кодированные символы UTF-8. Каков правильный путь?
$text = "äöü ä ö ü ß";
var_dump(mb_convert_encoding($text, 'UTF-8', 'HTML-ENTITIES'));
// string(24) "äöü ä ö ü ß"
mb_convert_encoding()
не является правильной функцией для того, чего вы пытаетесь достичь: вы действительно должны использовать html_entity_decode() вместо этого, потому что он будет преобразовывать только фактические html-объекты в UTF-8 и не повлияет на существующий UTF -8 символов в строке.
$text = "äöü ä ö ü ß";
var_dump(html_entity_decode($text, ENT_COMPAT | ENT_HTML401, 'UTF-8'));
который дает
string(18) "äöü ä ö ü ß"
и если это еще не работает, попробуйте это
html_entity_decode($html, ENT_QUOTES, 'cp1252');
Это то, что было необходимо для системы Windows IIS, чтобы все стало нормально работать. см. источник
В моем локальном string(18) "äöü ä ö ü ß"
я получаю string(18) "äöü ä ö ü ß"
.
Я думаю, что это связано с кодировкой вашей страницы. Отредактируйте файл с помощью Notepad++ и с панели инструментов перейдите к кодировке и измените на "Кодировать в ANSI". Если он не работает, попробуйте "Кодировать в UTF-8 без спецификации".