先日、「Google Maps にリンク」で書きましたように、地図にリンクをして所在地が分かりやすいようにというのをつくっていました。
しかし、さすがはBETA版(。。「さすがは」という日本語は変だな。。)改良・改善・修正が行われているようで、渡していた変数がうまくいかなくなりました。。がっくし。
googl に変数を渡す場合「p=」の後に変数を続ければよいのですが、通常この変数はエンコードして渡します。
ためしの段階では「SJIS」でエンコードしていましたから通常「UTF-8」で受け取る google に「SJIS」でエンコードしてますよーって教えてあげる為に「ie=SJIS&」をつけて渡せばきちんと認識してくれていました。
しかし、今回の修正でこの変数の渡し方ではうまくいかなくなってしまいました。
仕方ないなぁ、UTF-8でエンコードして渡すのがスマートなんだろうなぁ。。
ちゅうわけで、エンコード部分の修正です。
サーバに Jcode.pmモジュール(Jcode-0.83_1) がインストールされているので出来る技なのかもしれません。
foreach(@map){
{local($encomap=$_);
$encomap=~s/(W)/’%’ . unpack(‘H2’,$1)/eg;
}
foreach(@map){
{local($encomap=$_);
use Jcode; # Jcode.pmモジュールの読み込み
&Jcode::convert($encomap,’utf8′); # 頭の j を大文字の J にします
$encomap=~s/(W)/’%’ . unpack(‘H2’,$1)/eg;
}
もちろん渡すときの「ie=SJIS&」は外します。
HTML, CGIでの文字コード指定について ≫CGIでの明示方法 を参考
変数の文字コードをUTF-8に変換してからURLエンコードします。。たぶん。。あんまり分かってないかも(W
<参照>
(UTF-8の場合)
千代田区永田町1-7-1
(SJISの場合)。。たぶん地図は表示されません。
千代田区永田町1-7-1