XML::RSS文字コード統一の仕方がわかりません
perl初心者です。
rssを取得して簡易ブログパーツをつくりたいのですが文字コードでうまいこといかず悪戦しています。
以下がコードです。(きたなくてすいません…)
#!/usr/bin/perl
use LWP::Simple;
use XML::RSS;
use utf8;
use open ":utf8";
$logfile="./syoukai.log";
open(DAT, "$logfile");
@log=<DAT>;
close(DAT);
my $rss = new XML::RSS;
@list = ();
foreach(@log){
($nom,$name,$prof,$xml,$btitle,$ktitle,$klink)=split(/<>/);
eval { $rss->parse( LWP::Simple::get($xml) ); };
if($@) {
next;
}
$btitle = $rss->{'channel'}->{'title'};
$prof = $rss->{'channel'}->{'link'};
$item = $rss->{'items'};
$line = @{$item}[0];
$ktitle = $line->{'title'};
$klink = $line->{'link'};
$date = $line->{'pubDate'};
push(@list, "$date<>$name<>$prof<>$xml<>$btitle<>$ktitle<>$klink<>\n");
}
open(IN,">$logfile");
print IN @list;
close(IN);
exit;
syoukai.logを呼び出して
そこに書かれたxmlを順番に読み込んで
ファイルを更新したいのですが
これだと何もいじっていない$nameは大丈夫なんですが
$btitleや$ktitleが文字化けしてファイルに書かれてしまいます…。
use utf8;ではなく
use encoding 'UTF-8', STDOUT => 'cp932';としたら
今度は$nameだけ文字化けしてしまいます。
別々の文字コードを一緒にしてしまってるからだと思うのですが
どれがどの文字コードなのかがわからないでいます。
文字コードを統一する方法などがあれば教えてくださいm(__)m
説明&記述ヘタですいません…。
宜しくお願いします。
お礼
ご回答有難うございます。 折角、ご回答頂いたのですが自己解決致しました。 RSSフィードを作成前にJavaScriptを介してブラウザの互換性を高める為、特定の文字を変換させている事を忘れていました。 その一つに「→」は含まれており、RSSフィードを作成する際には、それら変換させた文字を正規表現で削除する事により解決致しました。 以上になります。誠に有難う御座いました。