CZ
1999/12/09(木) 11:55:57
[[解決]]
ふじさん、またまたありがとうございました。
http://www.din.or.jp/~ohzaki/perl.htm#JP_Escape で紹介されていたこの方法でうまく行きました。
$value =~ s/([^\w ])/sprintf("%%%02X", ord($1))/eg;
$value =~ tr/ /+/;
このような処理は正確にはURLエスケープというのですね。初めて知りました。
>日本語が化けるのでjcodeで何とかしたい
と思ったのは、
(1)URLアンエスケープ時の作業は以下のように行なっていますが、
$value =~ tr/+/ /;
$value =~ s/%([0-9A-Fa-f][0-9A-Fa-f])/chr(hex($1))/eg;
&Jcode::convert(\$value, $kcode);
URLエスケープはこの逆だから、やはりコンバート作業が必要かと考えたため、
(2)<A href="**.cgi?s=%83e%83X%83g+%83%81%81%5B%83%8B">
こんな風にリンクを貼ると、IE5のステータスバーに「**.cgi?s=?e?X?g+???[??」と表示されてしまうので、気になっていたからです。実害は無いので放っておくことにしますが、なぜこうなるのか分かりません。