火曜日, 11月 07, 2006

IEのhrefの文字化けによるリンク不具合の実験

部分更新スクリプトでラベルのリンクがうまく取得できなかったのでちょっと調べてみた

ラベルを日本語にするとURLに日本語が含まれることになるけど
ソースを見ると既に日本語の所はURLエンコードされてる
Firefoxだと問題はないけどIEだと問題が出るようだ
最初スクリプトが間違ってたのかと思ったけど
IE系ブラウザでスクリプトでリンクのhrefを取得するとこの時点で既に文字化けしてた
いろいろ検索してみたところこんなサイトを発見
alert window への日本語表示
具体的な対処方法が載ってなかったけど
なんとなくエンコード、デコードの順番の問題かなと思った
UTF-8の日本語をURLエンコードしてるとIEではそれを変な風にデコードしてしまうって事なのかな?
今IE系のブラウザのMaxthonを使ってるけど
Bloggerの日本語ラベルリンクを真ん中クリックで他のタブで開くと
URLの最後の方が文字化けしてうまくリンクを開けない
その辺と関係がありそうだ
そういえばwikipediaとかはてなダイアリーキーワードとかも中クリックの時はうまく開けなかった気がする
次に文字化けしたURLを
[ サンプル ] _ encoder / decorder(文字列の符号化・復号化)
でエンコードしてみた
そしたらソースにあったURLと同じになった
つまり
UTF-8→URLエスケープ(元のURL)→unescape(hrefで取得したURL?)→escape=元のURL
と戻すことができたのかな
escapeするだけだと今度はFirefoxで表示した時おかしくなるのでその辺はブラウザによって処理分けする必要があるかな
OperaとかSafariとかIE7じゃどうなるかわかんないけどね
とりあえずIE6とFirefoxだけみれればいいかな

IEの時だけescapeするようにしてみたら部分更新スクリプトがうまく動くようになった!