2008年11月15日土曜日

日本語を含むURLとChrome

ここを見にくるような人にとっては常識なのかも知れないが、URLはASCII文字列で構成しないといけないらしい。

UTF-8ですらなく、ASCIIなのだ。
これは歴史的なものもあるだろうし、そういうブラウザが世に出回ってしまっているから今更変えにくいのもあるのだろう。

なので、基本的に日本語をURLに乗せたいとなったら、サーバ側がデコーディングできる文字エンコード(Shift_JISとかUTF-8とか)にした上で、URLエンコード(っていうのかな?)、つまりASCII外の文字は%49%2a%45%acみたいな感じにしてやるべし、なのだそうだ(ASCII内でも?とか&とか%とかエスケープする必要のある文字もあるけど)。

で、そんなエンコードをしたURLをaタグのhrefの部分に指定してやると、ま、それをクリックしたらそのページに飛びますわな。で、ブラウザのロケーションエリアには当然そのページのURLが出ますわな。

・・・おや???こ、これは日本語だよな・・・。

そう。%エンコードしたはずのUTF-8文字列が日本語で表示されてるでないの。
え?ええぇ!?

とりあえず試した範囲ではFireFoxとChromeがこんな動作をする。IEはどうだか。

まあ、分かりやすくて良いではないか。。。
と、思いきや、そのURLをコピペして友達に教えたいってことがあったりしますよね。
なのでコピペして例えばメールにはっつけるとしますよね。すると、

・FireFoxは元の%エンコード形式のURLになる
・Chromeは表示した日本語そのまんまがペーストされる

なるほど、FireFoxすばらしい。この形式なら他のブラウザで開いてもちゃんと開けるはずだ。
しかし、Chromeよ。日本語にデコードしてしまったら、そのURLにはASCII文字でないものが含まれてしまうので、その辺をよきに計らってくれるブラウザでないと「そんなもんはない」と怒られてしまうではないか。
実際、FireFox→ChromeはOKだったが、Chrome→FireFoxはNGだった。そしてChrome→ChromeはOKだった。てめー自分だけ良けりゃいいのかよ。

それに、メーラーなどがURLを自動認識してクリックできるようになってたりする機能があるよね。
ああいうのって大体ASCII文字の連続してる部分だけを取り出すから日本語が含まれてると、それをURLとは認識してくれないのよね。

というわけで、URLの深遠に一歩近づきつつ、Chromeこのやろと思ったそんな一日であった。

☆☆☆☆☆宣伝です☆☆☆☆☆
そんな初心者なんだかマニアックなんだか良く分からない自分の作った「Push It! インターネット付箋紙」公開中です(右上のリンクからGO)。オンラインでもオフラインでも使える付箋紙です。

0 件のコメント: