[過去記事 元:2005-11-14 15:18:46]
昨日、「もっともこれでは英数字で始まるeuc-jpがうまく変換できない」と書いたら、さっそく条件に当てはまる訪問が来てしまったので、ちこっと改良した。
日々直す、いいことだね。
昨日下のようにしたところを、
if ((substr($value, 0, 2) eq '%E') or (substr($value, 0, 2) eq '%e')) {
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack('H2', $1)/eg;
} elsif (substr($value, 0, 1) eq '%') {
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack('H2', $1)/eg;
Encode::from_to($value, 'euc-jp' => 'utf8');
} else {
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack('H2', $1)/eg;
}
次のように改めた。
if ((substr($value, index($value,'%'), 2) eq '%E') or (substr($value, index($value,'%'), 2) eq '%e')) {
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack('H2', $1)/eg;
} else {
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack('H2', $1)/eg;
Encode::from_to($value, 'euc-jp' => 'utf8');
}
ちょっとソースがすっきりしたので、かえって良かったかも。
あと、infoseek.co.jpとask.jpからの訪問者もそれぞれひとりいるので、多くなるようだったら対応しよう。
コメントする