ええと,結局,最新版jcode.plでも半角カナは文字化けしました。 たまたま「シイ」はOKでしたが「アイウエオ」はNGでした。 こちらの掲示板でもたぶん化けると思います。 そこで,前に書いた方法をスクリプトにしてみました。 尚,送信ページには,↓この1行が入っています。 <INPUT TYPE="hidden" NAME="assist" VALUE=" "> VALUEは,全角スペース5個です。 −−−− # コード判別補助文字列名(送信ページと統一,半角英数字に限る) $assi = 'assist'; read(STDIN,$input,$ENV{'CONTENT_LENGTH'}); @parts = split(/&/,$input); # コード判別補助文字列$ASSIST0の取得 foreach(@parts) { ($key0,$val0) = split(/=/); # 最初の=で分離 $key0 =~ s/%([0-9a-fA-F][0-9a-fA-F])/pack("C",hex($1))/eg; if ($key0 eq "$assi") { $ASSIST0 = $val0; } } foreach(@parts) { ($key,$val) = split(/=/); # 最初の=で分離 $val =~ tr/+/ /; # trは1文字単位の置換 # コード判別補助文字列の追加 if ($key ne "$assi") { $val = $val.$ASSIST0; } $key =~ s/%([0-9a-fA-F][0-9a-fA-F])/pack("C",hex($1))/eg; $val =~ s/%([0-9a-fA-F][0-9a-fA-F])/pack("C",hex($1))/eg; jcode::convert(\$key,'euc');#---- from jcode.pl jcode::convert(\$val,'euc');#---- from jcode.pl if ($key eq "$ass") { $ASSIST = $val; } $val =~ s/($ASSIST)$//g; # コード判別補助文字列の除去 $key =~ s/\r\n|\r|\n//g; # gはマッチする文字全て $val =~ s/\r\n|\r|\n//g; $key =~ s/,/,/g; $val =~ s/,/,/g; $key =~ s/</</g; $val =~ s/</</g; $key =~ s/>/>/g; $val =~ s/>/>/g; $key =~ s/"/”/g; $val =~ s/"/”/g; $key =~ s/&/&/g; $val =~ s/&/&/g; $in{$key} = $val; } −−−− これで「ア」などという1文字の半角カナもコード判別できているようです。 もうちょっとスッキリできればいいのですが……。 |