Конвертировать HTML-сущности в UTF-8, но сохранить существующий UTF-8

1

Я хочу преобразовать html-объекты в UTF-8, но mb_convert_encoding уничтожает уже кодированные символы UTF-8. Каков правильный путь?

$text = "äöü ä ö ü ß";
var_dump(mb_convert_encoding($text, 'UTF-8', 'HTML-ENTITIES'));
// string(24) "äöü ä ö ü ß"
  • 0
    Возможно, вместо этого используйте html_entity_decode () ? демонстрация
  • 0
    работает как шарм! Вы можете сделать ответ, чтобы я мог пометить его как решенный?
Теги:
utf-8
html-entities

3 ответа

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) "äöü ä ö ü ß"

демонстрация

0

и если это еще не работает, попробуйте это

html_entity_decode($html, ENT_QUOTES, 'cp1252');

Это то, что было необходимо для системы Windows IIS, чтобы все стало нормально работать. см. источник

0

В моем локальном string(18) "äöü ä ö ü ß" я получаю string(18) "äöü ä ö ü ß".

Я думаю, что это связано с кодировкой вашей страницы. Отредактируйте файл с помощью Notepad++ и с панели инструментов перейдите к кодировке и измените на "Кодировать в ANSI". Если он не работает, попробуйте "Кодировать в UTF-8 без спецификации".

  • 0
    Я использую его в командной строке, и все это UTF-8

Ещё вопросы

Сообщество Overcoder
Наверх
Меню