- 2009年1月20日 22:07
指定したファイル群の文字コードを自動認識して変換する Perl ワンライナーです。
shiftjis or eucjp or UTF-8 (実はその他にも ascii 、BOM付き UTF-16/32)を自動判定し、適当な文字コード(この場合は UTF-8)に変換します。
perl -i -MEncode -MEncode::Guess -n0e ' print encode( "utf8", guess_encoding( $_, qw/shiftjis eucjp/ )->decode( $_ ) )'
Windows + ActivePerl、Linux (Mac含む) のどこでも動くと思います。
ワンライナーで検索してきた方なら説明不要な感じですね。実際に変換するファイルを末尾に列挙して下さい。バッククオートを利用して とかすると Cool ですね。Windows + ActivePerl な場合は 地道に find -name '*.htm*'*.html */*.html */*/*.html ... と指定します。
perl -i -MEncode -MEncode::Guess -n0e 'print encode( "utf8", guess_encoding( $_, qw/shiftjis eucjp/ )->decode( $_ ) )' `find -name '*.html'`
ちなみに encode( "utf8", guess_encoding( が出力文字コード、qw/shiftjis eucjp/ が入力文字コードの候補です。