将解析后的文本转换为utf-8

时间:2013-01-15 11:08:12

标签: php encoding utf-8 xml-parsing

除了我之前关于parsing images and text from complex xml的问题,现在唯一的问题是我没有得到正确的编码。文本在希腊语中,xml文件具有utf-8编码。 这是解析xml:

的代码
$xml = simplexml_load_file('myfile.xml');

$descriptions = $xml->xpath('//item/description');

foreach ( $descriptions as $description_node ) {

    $description_dom = new DOMDocument();
    $description_dom->loadHTML( (string)$description_node );

    $description_sxml = simplexml_import_dom( $description_dom );

    $imgs = $description_sxml->xpath('//img');
    $text = $description_sxml->xpath('//div');

    foreach($imgs as $image){

    echo (string)$image['src'];     
       }

    foreach($text as $t){

        echo (string)$t;
       }
    }

如果我echo $description_node,文字看起来不错,但在$description_dom simplexml_import_dom后,它看起来像这样:  Ïε ιÏÎ»Î±Î¼Î¹ÎºÎ­Ï ÎºÎ¿Î¹Î½ÏÏηÏεÏ.使用mb_convert_encoding将其转为: ýÃÂñù" ÃÂ。我做错了什么?

3 个答案:

答案 0 :(得分:1)

解决方案:在$description_dom = new DOMDocument();之后,我放置了此代码。

$description_html = mb_convert_encoding($description_node, 'HTML-ENTITIES', "UTF-8");

只需将html entities转换为UTF-8即可。而不是

$description_dom->loadHTML( (string)$description_node );

现在我加载转换后的html

$description_dom->loadHTML( (string)$description_html );

答案 1 :(得分:0)

将此添加到HTML页面的开头,您希望在其中显示文本:

<meta http-equiv='Content-Type' content='text/html; charset=utf-8'>

这应该正确渲染角色。

答案 2 :(得分:0)

不要转换任何内容..只需使用适当的声明打印

header("Content-Type: text/plain; charset=utf-8");

这就是你需要做的。在文件的顶部进行。