将 html 个实体转换为 UTF-8,但保留现有的 UTF-8

Convert html entities to UTF-8, but keep existing UTF-8

我想将 html 实体转换为 UTF-8,但 mb_convert_encoding 破坏了已经 UTF-8 编码的字符。正确的做法是什么?

$text = "äöü ä ö ü ß";
var_dump(mb_convert_encoding($text, 'UTF-8', 'HTML-ENTITIES'));
// string(24) "äöü ä ö ü ß"

在我的本地主机中,我得到 string(18) "äöü ä ö ü ß"

我认为这与您的页面编码有关。使用 Notepad++ 编辑文件,从工具栏转到编码并更改为 'Encode in ANSI'。如果它不起作用,请尝试 'Encode in UTF-8 without BOM'.

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

Demo

如果还是不行,试试这个

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

这是 Windows IIS 系统开始正常工作所需要的。 see source