2004/06/25(金) [n年前の日記]
#3 [web] _TAG index/URLエンコード・デコードフォーム
<a name="二バイト文字で書かれた単語"> とか書いてる人がたまに居るんだけど。アレって問題はないのかしら。今回、
_こちらの方のページ
にリンクしようとして不安になってしまったのだけど。いや、Windows + IE で閲覧だけする分にはジャンプできてますけど。
*1
どこかにこのあたりの仕組み・仕様を解説してるページがないものか。結構ブラウザが吸収してくれるのかな。だとすれば、かえってエンコードして記述しちゃうほうがまずいのか。でも、wikiとかはエンコードしたURLになってたりするし。うーん。
*1: hnf は euc-jp で記述してるから不安なのであります。と思ったけど、Windows + IE(Sleipnir)で見てる分にはジャンプできてる。先ほど導入したCygwin+w3mで見てみた。こっちはそこに飛ばない、が、元々飛ぶブラウザなのかどうかもわからないし。このページのHTMLソース中には、eucで二バイト文字が書かれてる。リンク先はJISで書かれてるみたいだ。
この記事へのツッコミ
[ ツッコミを読む(4) | ツッコむ ]
以上です。
非ASCII文字(不正なURI)が用いられていた場合にブラウザは、与えられた文字をUTF-8で表現し、そのバイトをURIエスケープする。という規則が推奨されています。
要するに、仮名漢字で指定されたアンカーやファイル名に飛べないものだと思ってかかれということです。
> 要するに、仮名漢字で指定されたアンカーやファイル名に飛べないものだと思ってかかれということ
ああ、やはり、そんな感じでありましたか。
おかげさまで、疑問氷解。すっきりしたでありますです。(´▽`)
> ブラウザは、与えられた文字をUTF-8で表現し、そのバイトをURIエスケープする
ということは、今のブラウザはそういった動作をしてるから、
非ASCII文字を使っても結構イケちゃうときがある、ということですかな。
このあたり、HTMLページ作成ツールの類で
サポートしておくべき内容なんだろうなぁ。
アンカー名に非ASCII文字が使われていたら警告を表示するとか。
いや、一通り出来てからチェックするツール・ページもありますけど。
http://openlab.ring.gr.jp/k16/htmllint/htmllint.cgi
とか。
う。日記ページをチェックしたら凄い事になった… orz
>> 要するに、仮名漢字で指定されたアンカーやファイル名に飛べないものだと思ってかかれということ
「文字コード」が異なる場合、仮名漢字で指定されたアンカーやファイル名に飛べないと思ってかかれ です。
IEだと仮名漢字で指定されたアンカーに大抵飛べるのは
1.ページ読み込み
2.文字コードを認識し、内部的におそらくUTF-8へ変換
3.アンカーへジャンプ
という手順をとっているからだと思われます。
そして、Mozillaなどが文字コードが一致していない場合に指定したアンカーへ飛べないことがあるのは、おそらくW3C勧告で推奨されている手順をそのまま使っているため、同じ文字であっても文字コードが異なればURIエスケープした結果が違うものになってしまうことによるものでしょう。
> おそらくW3C勧告で推奨されている手順をそのまま使っているため〜
なるほど。すると、W3C勧告の手順のほうが、
穴がありそうということですかね…。
さすが、腐っても(?)IE、というところでしょうか<なんか違う気が…