2

私が使用するecho $doc->saveHTML();と、それに応じて文字が表示されますが、xmlに到達すると? 要素を抽出する xpath で、問題が再び発生します。

文字を正しく表示できないようです。正しく変換するにはどうすればよいですか。私は得ています:

婢跺繐顒滈拺鍙ョ瀵偓鐞涱偊鈧繑妲戦挅鍕綍婢舵牕顨� 闂€鍌溾敄缂侊綀濮虫稉濠呫€� 娑擃叀顣荤純鎴犵綍閺冭泛鐨绘總鍏呯瑐鐞涳綀鏉藉▎

適切な中国語の代わりに:

<head><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta charset="gbk"/></head>

私のPHPコード:

$html = file_get_contents('http://item.taobao.com/item.htm?spm=a2106.m874.1000384.41.aG3Kbi&id=20811635147&_u=o1ffj7oi9ad3&scm=1029.newlist-0.1.16&ppath=&sku=');
$doc = new DOMDocument();

// Based on Article http://stackoverflow.com/questions/11309194/php-domdocument-failing-to-handle-utf-8-characters/11310258#11310258
$searchPage = mb_convert_encoding($html,"HTML-ENTITIES","GBK");
$doc->loadHTML($searchPage);
// echo $doc->saveHTML(); 

$xpath = new DOMXpath($doc);
$elements = $xpath->query("//*[@id='detail']/div[1]/h3");

foreach ($elements as $e) {
   //echo $e->nodeValue;
   echo mb_convert_encoding($e->nodeValue,"utf-8","gbk");
}
4

2 に答える 2

2

ドキュメントはすでに html エンティティに変換されているため、結果を印刷するときにエンコーディングを変換する必要はありません。そう:

echo $e->nodeValue;
// echo mb_convert_encoding($e->nodeValue,"utf-8","gbk");

正しい出力が得られなかった理由は<meta charset="gbk"/>、本来あるべき html を .html に入れたからです<meta charset="utf-8"/>

于 2013-07-26T09:41:01.233 に答える