0

除了我之前关于从复杂 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将其变为: ýÃÂñù" ÃÂ。我究竟做错了什么?

4

3 回答 3

1

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

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

简单地转换html entitiesUTF-8. 代替

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

现在我加载转换后的 html

$description_dom->loadHTML( (string)$description_html );
于 2013-01-15T22:31:08.127 回答
0

将此添加到您希望显示文本的 HTML 页面的头部:

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

这应该正确呈现字符。

于 2013-01-15T11:16:43.247 回答
0

不要转换任何东西..只需用正确的声明打印它

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

这就是你需要做的。在文件顶部执行此操作。

于 2013-01-15T11:23:35.177 回答