UTF-8へのエスケープ方法
ホームページに検索窓をつけてYahoo辞書を検索するようなCGIを作ったのですが、検索すると、例えば、「辞書」と入れると、キーワードが%8E%AB%8F%91と、Shift-JISでエスケープされているようなんです。
これを%e8%be%9e%e6%9b%b8と、UTF-8でエスケープするようにするのはどうすればいいんでしょうか。
こんなソースです。
初心者なのでよろしくお願いします。
#!/usr/local/bin/perl
#use strict;
my %engine = (
google => 'http://www.google.com/search?ie=Shift_JIS&safe=off&q=',
yahoo => 'http://search.yahoo.co.jp/search?ei=SJIS&p=',
kokugo => 'http://dic.yahoo.co.jp/dsearch?enc=UTF-8&stype=0&dtype=0&p=',
eigo => 'http://eow.alc.co.jp/',
);
my (%in);
%in = map { split(/=/, $_, 2) } split(/[&;]/, $ENV{QUERY_STRING});
search($in{word}, $in{engine});
exit;
sub search
{
my ($word, $search) = @_;
# 謎の検索エンジンだったら google
$search = $engine{$search} || $engine{google};
# アルクは検索語をエスケープしない
if($search eq "http://eow.alc.co.jp/"){
$word =~ s/%([0-9A-Fa-f][0-9A-Fa-f])/pack('H2', $1)/eg;
print qq(Location: $search$word/UTF-8/\n\n);
}else{
print qq(Location: $search$word\n\n);
}
}
お礼
ありがとうございます! 早速そのブランドの服をチェックしてみます。 とても参考になりました、ありがとうございます。