将 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) "äöü ä ö ü ß"
如果还是不行,试试这个
html_entity_decode($html, ENT_QUOTES, 'cp1252');
这是 Windows IIS 系统开始正常工作所需要的。 see source
我想将 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) "äöü ä ö ü ß"
如果还是不行,试试这个
html_entity_decode($html, ENT_QUOTES, 'cp1252');
这是 Windows IIS 系统开始正常工作所需要的。 see source