標準入力からのutf-8→euc-jpで一部文字化け
これまでeuc-jpで作られていたHTMLフォームページをutf-8に変更したところ、フォームメールCGIの文字列処理で「~」「-」「 」(半角スペース)など一部の文字が文字化けするようになってしまいました。
Jcode.pm → Encodeに変更してみても症状は変わりませんでした。
Encodeは初めて使うのですが、過去ログを見てもよく分かりません・・・
どうぞお力添えをお願いします。
(1)下記のperlの記述方法で間違っている箇所はありますか?
(2)正しく出力できる方法がありましたら、教えてください。
(3)http://oshiete1.goo.ne.jp/kotaeru.php3?q=1540626 で話されている、右側の折れ曲がった「~」はどうやって入力するのでしょうか?
(3)perl側もutf-8で記述すれば、文字化けなど発生せずに処理出来るものなのでしょうか?
↓perl5.8 文字コードeuc-jp
#!/usr/bin/perl
use Encode;####
if ($ENV{'CONTENT_TYPE'} =~ /application\/x-www-form-urlencoded/i) {
binmode(STDIN);
read(STDIN,$buffer,$ENV{'CONTENT_LENGTH'});
@data_s = split(/&/,$buffer);
foreach $buffer (@data_s) {
($key,$value) = split(/=/,$buffer);
$value =~ tr/+/ /;
$value =~ s/%([0-9A-Fa-f][0-9A-Fa-f])/pack("C",hex($1))/eg;
$value = encode("euc-jp", $value);####
print "$key = $value\n";
}
}