Конвертировать 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, чтобы все работало правильно. увидеть источник

Другие вопросы по тегам