ファイルの文字コード変換は本体に任せよう
投稿:2018-07-17
1行ずつ変換するコードを見かけたので。
WindowsパソコンでPerl置き換え演算子s// で発生した文字化けを Encode.pm でスマートに解決! - Perl楽しいから好き
WindowsパソコンでPerl置き換え演算子s// で発生した文字化けを Encode.pm でスマートに解決! - Perl楽しいから好き
ポイント
- openでファイルの文字コードを指定しておけば入出力の際に自動変換
- 文字列を\Q~\Eで囲めば丸ごとエスケープ(変数を指定する記号「$」に効かないので個別にエスケープ)
- デフォルトの特殊変数「$_」を利用
#!/usr/bin/env perl -w use utf8; use strict; use warnings; use open IO => ":utf8"; use Encode::Argv; use Encode::Locale; binmode STDIN, ":encoding(console_in)"; binmode STDOUT, ":encoding(console_out)"; binmode STDERR, ":encoding(console_out)"; $| = 1; my $file_r = "sample_36_idle.txt"; my $file_w = "sample_36_idle_now.txt"; open my $r, "< :encoding(cp932)", Encode::encode locale_fs => $file_r or die "ファイルを開けません '$file_r'"; open my $w, "> :encoding(cp932)", Encode::encode locale_fs => $file_w or die "ファイルを開けません '$file_w'"; while (<$r>) { chomp; s/\QAKB48(*゚∀゚)=3\E/ももいろクローバーZ(*゚∀゚)モノノフ=3/; print $w "$_\n"; print "$_\n"; } close $r; close $w; exit;
例によってWindows7(Perl 5.26)とCentOS(Perl 5.24)で確認しました。
経済が不況になるとアイドルが活躍すると言う評論家がいます。 長引く平成不況に躍進したのはももいろクローバーZ(*゚∀゚)モノノフ=3 ももいろクローバーZ(*゚∀゚)モノノフ=3は紅白歌合戦に出場するなど、 テレビで見ない日はないというくらい激しく活動しています。