【perlメモ】Data::Dumperでダンプした時日本語が文字化けしないようにするには
XMLをパース結果を表示したりするのにDate::Dumperを利用して表示するのが一般的ですが、下の様に日本語は文字化けします。文字化けという表現はあまり正しくないかもしれませんが、とにかく普通に読めない状態で表示されるわけです。まあ、そういうものなのだろうと思って今まで華麗にスルーしてきたのですが、一応解決方法があるのだろうかと思って先日調べてみました。
$VAR1 = {
‘xmlns’ => ‘urn:yahoo:jp:srchmi’,
‘firstResultPosition’ => ‘1’,
‘Result’ => [
{
‘Height’ => ‘302’,
‘FileFormat’ => ‘jpeg’,
‘Width’ => ‘267’,
‘Summary’ => "\x{753b}\x{50cf}\x{4e00}\x{89a7} \x{6b21}\x{3078}",
‘RefererUrl’ => ‘http://www.tsutaya.co.jp/works/30023197/pic.html?dispImageNo=002’,
‘Title’ => "\x{30d0}\x{30a4}\x{30aa}\x{30cf}\x{30b6}\x{30fc}\x{30c9}\x{3000}\x{30a2}\x{30f3}\x{30d6}\x{30ec}\x{30e9} \x{30af}\x{30ed}\x{30cb}\x{30af}\x{30eb}\x{30ba}",
‘Thumbnail’ => {
‘Height’ => ‘130’,
‘Width’ => ‘114’,
‘Url’ => ‘http://thm-a01.yimg.com/nimage/813c6f7e9a756276’
},
‘ClickUrl’ => ‘http://www.tsutaya.co.jp/images/bamen/00056/4976219026642_B002L.jpg’,
‘Url’ => ‘http://www.tsutaya.co.jp/images/bamen/00056/4976219026642_B002L.jpg’,
‘FileSize’ => ‘28.2kB’
},
検索してみるとすぐ見つかりました。でも、オプションやutf8フラグてきなものじゃなくて携帯の絵文字をコンバートするときのようなバッドノウハウ的な方法なのでもっとスマートな方法はないのだろうかと思ってさらに調べていると
◇Data::Dumper;でダンプ後表示した文字列\x{30fc}….. – Perl – 教えて!goo
下のサイト様の記事を発見。
◇Data::DumperでUTF-8フラグつき文字列をエスケープさせないようにするには « ku
Data::Dumper::qquote()メソッドを無効にする方法があったのでその方法を利用させていただくことにしました。
結果は下のとおりでちゃんと読める形で表示されるようになりました。
$VAR1 = {
‘xmlns’ => ‘urn:yahoo:jp:srchmi’,
‘firstResultPosition’ => 1,
‘Result’ => [
{
‘Height’ => 302,
‘FileFormat’ => ‘jpeg’,
‘Width’ => 267,
‘Summary’ => 画像一覧 次へ,
‘RefererUrl’ => ‘http://www.tsutaya.co.jp/works/30023197/pic.html?dispImageNo=002’,
‘Title’ => バイオハザード アンブレラ クロニクルズ,
‘Thumbnail’ => {
‘Height’ => 130,
‘Width’ => 114,
‘Url’ => ‘http://thm-a01.yimg.com/nimage/813c6f7e9a756276’
},
‘ClickUrl’ => ‘http://www.tsutaya.co.jp/images/bamen/00056/4976219026642_B002L.jpg’,
‘Url’ => ‘http://www.tsutaya.co.jp/images/bamen/00056/4976219026642_B002L.jpg’,
‘FileSize’ => ‘28.2kB’
},
でもって、YAML::Dumpを使うといいらしいとあるので使ってみたのが下。
—
Result:
– ClickUrl: http://www.tsutaya.co.jp/images/bamen/00056/4976219026642_B002L.jpg
FileFormat: jpeg
FileSize: 28.2kB
Height: 302
RefererUrl: http://www.tsutaya.co.jp/works/30023197/pic.html?dispImageNo=002
Summary: 画像一覧 次へ
Thumbnail:
Height: 130
Url: http://thm-a01.yimg.com/nimage/813c6f7e9a756276
Width: 114
Title: バイオハザード アンブレラ クロニクルズ
Url: http://www.tsutaya.co.jp/images/bamen/00056/4976219026642_B002L.jpg
Width: 267
確かに日本語は文字化けしないしシンプルで見やすいけど、Data::Dumperの方がデータの構造が把握しやすいのでやっぱりData::Dumperを使いたいと思います。
タグ : perlメモ