PHP DOMDocument未正确呈现Unicode字符

时间:2013-03-29 13:22:43

标签: php unicode domdocument

我使用CKEditor让用户发表评论,用户也可以将unicode字符放在评论框中。

当我提交表格并检查$ _POST [“回复”]时,unicode字符显示得非常好。我还在页面顶部使用了header('Content-type:text/html; charset=utf-8'); 但是当我使用PHP DOMDocument处理它时,所有字符都变得不可读。

$html_unicode = "xyz unicode data";
$html_data = '<body>'.$html_unicode . '</body>';
$dom = new DOMDocument();
$dom->loadHTML($html_data );

$elements = $dom->getElementsByTagName('body');

当我回应

echo $dom->textContent;

输出变为

§Ø³ÙبÙÙ ÙÙÚº غرÙب ک٠آÙÛ ÙÛÙ

如何使用PHP DOMDocument获取正确的unicode字符。

4 个答案:

答案 0 :(得分:11)

这对我有用:

$html_unicode = "xyz unicode data";
$html_data = '<body>'.$html_unicode . '</body>';

$dom = new DOMDocument();
$html_data  = mb_convert_encoding($html_data , 'HTML-ENTITIES', 'UTF-8'); // require mb_string
$dom->loadHTML($html_data);

$elements = $dom->getElementsByTagName('body');

答案 1 :(得分:4)

试试这个:)

<?php
    $html_unicode = "xyz unicode data";
    $html_data = '<body>'.$html_unicode . '</body>';
    $dom = new DOMDocument();
    $dom->loadHTML($html_data );

    $elements = $dom->getElementsByTagName('body');
    echo utf8_decode($dom->textContent);
?>

答案 2 :(得分:1)

感谢上帝,我通过更换来获得解决方案

$html_data = '<body>'.$html_unicode . '</body>';

$html_data = '<head><meta http-equiv="Content-Type" 
content="text/html; charset=utf-8">
</head><body>' . $html_unicode . '</body>';

答案 3 :(得分:0)

这适用于阿拉伯语