nihimotoの日記

https://mapsengine.google.com/map/edit?mid=zhpqXW1XM-zc.kmD-c8p1GAWI

XML::SimpleでXMLをパースした際に、文字化けを起こす件について

原因はXML::SimpleのXMLinを使った時に、utf-8のデータが文字化けしてしまう様子。
ParserがどうもXML::SAXを使っていたようで、それが原因で化ける。
よくわからないが。

2007-05-03 - 結城浩のはてな日記
http://d.hatena.ne.jp/hyuki/20070503#utf8flag

によると
$XML::Simple::PREFERRED_PARSER = 'XML::Parser';
を実行してやればParserがXML::Parserに固定されるので化けなくなるとのこと。

しかしMacOSXではXML::Parserがデフォルトで入っていなかったのでインストールの必要がある。
cpanでインストールしようとするとさらにexpatというのをインストールしておく必要があるらしい。

そこで下記の手順にしたがって両方インストール。

Mac OS XXML::Parser と expat をインストール - Daio Today
http://psst.jp/syn/archives/000182.html
============================================================
■まず、libexpatのインストール

http://sourceforge.net/projects/expat/ から expat-1.95.8.tar.gz をダウンロード。
解凍して、ディレクトリに入る。

makeはデフォルト状態で特に問題なし。

./configure
make
sudo make install
make check
make distclean

次のファイルがインストールされる。

/usr/local/lib/libexpat.0.5.0.dylib
/usr/local/lib/libexpat.a
/usr/local/lib/libexpat.la
/usr/local/include/expat.h
/usr/local/include/expat_external.h

XML::Parser と XML::RSS のインストール

expat さえ入っていれば、XML::Parser は難なく入る。
そして、 XML::Parser が入っていれば、 XML::RSS も難なく入る。
XML::RSS のインストール時にテストでコケる場合は言語環境を外す。

cpan XML::Parser
export LANG=C
cpan XML::RSS
============================================================

両方インストールしてDumpして内容を確認してみると
文字化けの問題が解決していた!
thx!