日記
PHPのDOM APIで日本語が数値文字参照に変換される問題Edit

SymfonyのFillIn機能で日本語が実体参照になってしまうの問題と同一で、DOM APIを使ってXML(XHTML)をいじると、出力(saveXML())に含まれる日本語が数値文字参照になってしまう問題に遭遇中。

CoLinux上のDebian 3.4.3-13/PHP 5.1.4では問題ないのに、CentOS release 4.4/PHP 5.1.5では変換されてしまう。libxmlのバージョンは、前者が2.6.26、後者が2.6.16。で、libxmlのChangeLogをながめてみたところ、2.6.19でサポートされた「switched back to assuming UTF-8 in case no encoding is given at serialization time」あたりが怪しそうな気がするな。

ってことで、ひとまず後者のlibxmlをソースで最新バージョン(2.6.27)に入れ替えたところ、数字文字参照化されなくなってくれた(けど、細かい原因はそれじゃあ確定しないんで、誰か2.6.18と2.6.19の二つのバージョンの差を比べてみたりしない?)。けど、副作用が未検証なんで、本番環境に適用するかどうかは要検討。libxmlって後方互換性は高い方かなー。

Published At2006-10-31 00:00Updated At2006-10-31 00:00