libxmlのHTMLパーサは内部ではutf-8を使っていて、 <META http-equiv="Content-Type" content="text/html; charset=XXXXX"> を読んで文字コードを自動変換してくれるのはいいが、Shift_JISつったら「規格上の」Shift_JISとして解釈するのでWindows文字があると失敗する。 (たぶんiconvの挙動) のでCP932とかに設定すべし PHPのDOMDocument::loadHTML()/LoadHTMLFile()だと、metaがなければDOMDocument::encodingが使われるが、metaより優先的に与えることはできなさそうなので、置換するしかなさげ $doc = new DOMDocument(); #$doc->encoding = "CP932"; // metaがあったら使われない