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