ようこそ ゲスト さん、新規登録(無料)して気になる疑問を解決しませんか?

質問

質問者:nikugyoza じゃらんのAPIでRESTで取得したら文字化け
困り度:
  • すぐに回答を!
はじめて質問です。失礼があったらご容赦ください。
じゃらんAPIのRESTで取得したXMLデータを、単にテキストで
書き出したいのですが、どうしても文字化けしてしまいます。
いろいろ試したのですがどうしても駄目でした。
以下がそのスクリプトです。
どなたかご教示いただければ幸いです。
(作業環境:Windows XP / Perl5.8)

use encoding 'utf8';
use Encode;
use LWP::Simple;

my $key='xxxxxxxxx';

my $url="​http://jws.jalan.net/APILite/HotelSearch/V1/?key=$key&pref=1200...

my $data=get($url) or die;

open W,'>:utf8','MyNouhin.txt' or die;
print W $data;
close W;
質問投稿日時:09/10/15 00:52
質問番号:5368072
画像

回答

 

回答者:ryu_chan decodeしていないのが原因だと思います。
データ読み込みの際、以下のようにdecodeすればいいと思います。

my $data=decode_utf8( get($url) ) or die;

あと、use encoding 'utf8'は副作用が多いので、use utf8のほうをお薦めします。
一例として、以下のようにすれば、標準入出力やファイルへの入出力がutf8となります。

# -- use encoding 'utf8' に変わる部分 ---------
use utf8;
use open IO => ":encoding(utf8)";
use open ":std";
# ---------------------------------------------

use Encode;
use LWP::Simple;

my $key='xxxxxxxxx';

my $url="http://〜〜";

my $data=decode_utf8( get($url) ) or die;

open W,'>','MyNouhin.txt' or die;
print W $data;
close W;
種類:アドバイス
どんな人:一般人
自信:参考意見
回答日時:09/10/15 08:27
回答番号:No.1
この回答への補足この回答に補足をつける(質問者のみ)
この回答へのお礼ありがとうございます!
希望通りの動作を確認できました。
本当に助かりました。
お会いしてお礼申し上げたいぐらいです。