2006-09-03 Perlで日本語(ISO-2022-JP)メールを送信(まとめ)
を参考に化けるという文字をテストしてみる。
#!/usr/bin/env perl use utf8; use open IN => ":utf8"; # 入出力をUTF8とする use open OUT => ":iso-2022-jp"; # 出力をJISとする use Jcode; use Encode; my $str='接~∥-¢£¬'; $str =~ tr/[\x{ff5e}\x{2225}\x{ff0d}\x{ffe0}\x{ffe1}\x{ffe2}]/[\x{301c}\x{2016}\x{2212}\x{00a\ 2}\x{00a3}\x{00ac}]/; my $jis = jcode($str)->jis; print "use Jcode\n"; print $jis; print "\n"; print "use Encode\n"; my $enc = encode('jis', $str); print $enc; print "\n";
実行結果(teratermの出力をJISで。)
[takahasi@test takahashi]$ perl test.pl use Jcode 接~∥-¢£¬ use Encode 接~∥-¢£¬
文字化けなかった。
もう少しテストしたいとこと。
追記
#use utf8;
とすると、
use Jcode +A\x{00bd}±・\x{00bd}\x{00b2}+A\x{00bd}\x{00b3}+A\x{00bd}´・\x{00bd}\x{00b5})A\x{008e}\x{00a5}+A\x{00bd}\x{009e}+$\x{0088}\x{00a5}+A\x{00bc}\x{008d}+A"D\x{00a0}+A"D"B+A"D¢ use Encode +A\x{00bd}±・\x{00bd}\x{00b2}+A\x{00bd}\x{00b3}+A\x{00bd}´・\x{00bd}\x{00b5})A\x{008e}\x{00a5}+A\x{00bd}\x{009e}+$\x{0088}\x{00a5}+A\x{00bc}\x{008d}+A"D\x{00a0}+A"D"B+A"D¢
となる。
use Jcode; #←これは有効にする #$str =~ tr/[\x{ff5e}\x{2225}\x{ff0d}\x{ffe0}\x{ffe1}\x{ffe2}]/[\x{301c}\x{2016}\x{2212}\x{00a\ 2}\x{00a3}\x{00ac}]/;
とすると、
use Jcode アイウエオ接\x{ff5e}\x{2225}\x{ff0d}\x{ffe0}\x{ffe1}\x{ffe2} use Encode アイウエオ接\x{ff5e}\x{2225}\x{ff0d}\x{ffe0}\x{ffe1}\x{ffe2}
となってしまう。 ちなみに、
#use open OUT => ":iso-2022-jp"; # 出力をJISとする use open OUT => ":utf8"; # 出力をUTF8とする
としても、出力は問題なかったようなので、ここは関係ない模様。