ablog

不器用で落着きのない技術者のメモ

SJISのWebページをスクレイピングしてCSVに保存すると文字化けする

WWW::Mechanize や Web::Scraper を使って Shift-JIS のWebページをスクレイピングして CSV に保存しようとすると、「Wide character in print at ...」とエラーメッセージが出力されて文字化けするので、【Perl 文字化け解決】Wide character in print atといふエラーが原因だったー - Perl楽しいから好き を参考に、書込み先ファイルをオープンするときにエンコーディングに Shift-JIS を指定したら解決した。

open (my $fh, ">:encoding(shiftjis)", "foo.csv");

...

print $fh $line;

...

close ($fh);

「decodeしていじってencode」という基本からすると間違っている気がするが、また今度調べる。