Encode と encoding の同時使用で ISO-2022-JP に encode できない
CentOS を 5.1 から 5.2 にアップデートした頃から PerlCGI からのメール送信が出来なくなって、調べていたら「ISO-2022-JP への encode がおかいぞ問題」に辿り着きました。
以下のコードで、euc-jp が吐かれてしまいます。
#! /usr/bin/perl -w
use encoding('UTF8');
use Encode;
binmode(STDOUT);
my $text = "<全角文字ですよぉ。>";
print encode('ISO-2022-JP', $text), "\n";
以下のいずれかで正常に jisコードを吐く様になるのですが、こんなものなんでしょうか?
1 「use encoding('UTF8');」 を 「use utf8;」に替える
2 print の直前に "no encoding;" を入れる
CentOS 5.1 では多分正常に ISO-2022-JP への変換ができていたのだと思います。
私の使用するバージョンの Cygwin の Perl でも正常です。
問題のある CentOS5.2 と 問題の無い Cygwin版で、関係しそうなバージョンの違いはありません。
CentOS 5.2:
Perl 5.008008
Encode 2.12
Encode::JP 2.01
encoding 2.02
Cygwin: CYGWIN_NT-5.1 **** 1.5.25(0.156/4/2) 2008-04-17 12:11 i686 Cygwin
Perl 5.008008
Encode 2.12
Encode::JP 2.01
encoding 2.02
できれば、すでに動いているCGIの use encoding('UTF8'); を直す事なく動く様にしたいのです。