CGIからYahoo!地図へのリンク | 閉鎖中

CGIからYahoo!地図へのリンク

Yahoo!地図の検索結果一覧へのリンク生成についてです。

結果から言うと、なんだかうまくいかない人は、
ei=オプションの文字コード
を、ご使用のものに合わせると、うまく行くと思われます。
enc-jp等。


以下、ここにたどり着くまでの経緯。
p=オプションがキーワード(住所)のオプションのようですが、単純に住所を入れてもどうもうまくいかなくて。
単純にURLエンコードしたものを入れても、やっぱりうまくいかなくて。
よく見ると、ei=オプションで、文字コードが utf-8 になっていました。
じゃあ、CGI を utf-8 にしようと思ったら、Jcode では出来ないのね(^^;
Encode.pmではできる、ということなのですが、ニフティは USE 自体が使えないので、いっさいのモジュールは使えない。
いろいろやってる内に、トップページからの検索と、検索結果一覧からの検索のURLエンコード後の文字列が違うことに気づき。
よく見ると、トップページからはutf-8、一覧からはenc-jpになっていることが判明。
なんだ、単純にei=オプションの文字コードを変えればいいだけですか(^^;?
きっと、sjisでもうまくいくのでしょうけど、一覧からの検索と整合をはかり、
CGI上ではJcodeを使ってencに変換、ei=オプションをenc-jpにして送信すると、期待通りの画面が開きました。

以下、サンプルコード。

$address = '検索住所';

# eucに変換
&jcode::convert(\$address, "euc", "sjis");
# URLエンコード
$address =~ s/([^\w ])/'%'.unpack('H2', $1)/eg;
$address =~ tr/ /+/;
# URL生成
$maplist = 'http://map.yahoo.co.jp/search?p='.$address.'&gc=&ei=euc-jp';

print '<a href="'.$maplist.'">'.$maplist.'</a>';