Zend_Dom_Query / DOMDocument 文字化けと解決

in

先日Zend_Dom_Query便利だなーと使おうとしたところ、日本語が文字化けしてしまいました。UTF-8のファイルに使用したのですが、どの出力文字コードで出力しても文字化けしてしまいます。

調べたところ、Zend_Dom_Queryの内部ではDOMDocumentを使っていて、DOMDocumentで同じファイルを処理してもやはり文字化けしてしまいます。

Zend_Dom_Queryのエンコーディングの誤認識については下記のような問題があがっていて、そもそもどのエンコーディングとして認識されているかを外部から取得できないので調べづらい状況です。
Nabble - Zend MVC - Encoding issues with Zend_Dom_Query
http://framework.zend.com/issues/browse/ZF-3938

DOMDocumentの文字コードについては、htmlの場合にiso-8859-1になってしまう、という問題があるようです。
PHP DOM XML extension encoding processing

Zend_Dom_Queryのコードをいじってデバッグしたところ、エンコーディング自体は正しくUTF-8として認識されていました。

だいぶ遠回りしてしまいましたが、今回の原因は、BOMでした。BOM付きのUTF-8のファイルを処理すると文字化けしてしまうようです。file_get_contentsした後bomを自力で削除して対応しました。

DOMDocumentのissueに上がっているのかは不明です。

Trackback URL for this post:

http://nonn-et-twk.net/twk/trackback/337
0