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

时间:2015-07-10 10:16:27

标签: php utf-8 html-entities mb-convert-encoding

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

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

3 个答案:

答案 0 :(得分:4)

SELECT * FROM information_schema.tables 不是您正在尝试实现的正确功能:您应该使用html_entity_decode()代替,因为它只会将实际的html实体转换为UTF -8,并且不会影响字符串中现有的UTF-8字符。

mb_convert_encoding()

给出了

$text = "äöü ä ö ü ß";
var_dump(html_entity_decode($text, ENT_COMPAT | ENT_HTML401, 'UTF-8'));

Demo

答案 1 :(得分:0)

在我的localhost中,我得到string(18) "äöü ä ö ü ß"

我认为这与您的页面编码有关。使用Notepad ++编辑文件,然后从工具栏转到编码并更改为“在ANSI中编码”。如果它不起作用,那么尝试使用'无BOM的UTF-8编码'。

答案 2 :(得分:0)

如果仍然无效,请尝试此

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

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