ページ 11

anchor部のURIエンコード文字列の処理についての質問

Posted: 2011年12月19日(月) 02:57
by M.J.D.
下記のようなanchorに対してのリンクを作成した場合の動作についての質問です.

コード: 全て選択

<a id="local%20system" />

同じページ中で,下記のようなリンクを作成すると,

コード: 全て選択

<a href="#local%20system">

Firefox8.0.1でのリンク先が下記のようになり,勝手にURIエンコード文字列がデコードされリンク先に飛べなくなってしまいます.

コード: 全て選択

(省略)#local(半角スペース)system

anchor部にわざわざ「%20」を使用する必要があるかは兎も角として,このような動作はHTMLの解釈として正しいんでしょうか.

なお,Firefox以外については,Chrome,IE,w3mで動作を確認していますが,勝手にURIエンコード文字列をデコードすることはありませんでしたので,Firefox特有の問題のようです.

Re: anchor部のURIエンコード文字列の処理についての質問

Posted: 2011年12月19日(月) 20:00
by Sakuraya
Mozilla/5.0 (X11; Linux i686; rv:11.0a1) Gecko/20111218 Firefox/11.0a1で再現しました。
<a href="#local%20system">SomeAnchor</a>としたときは<a id="local system"/>としなければいけませんね。
ですが、HTML 4.01 Specification6.2 SGML basic typesを読むとそもそもid属性に半角スペースと%は使えません。
使用可能な文字でidを付けていない場合はUAによって解釈が変わってもしかたがないと思います。

Re: anchor部のURIエンコード文字列の処理についての質問

Posted: 2011年12月20日(火) 00:47
by M.J.D.
> Sakurayaさん
早速の回答,どうもありがとうございます.
idについては,確かにその通りでしたので,これについては記載ミスでした.
という訳で,こちらはHTMLのソースを修正ですね(アンスコに置き換えかな).

以下,蛇足です.
機能としては同等のa要素のname属性(廃止予定)の場合は,定義上はCDATA,ということで,name属性に変えてみましたが,なんと,この時はちゃんとリンクされました.
というわけで勝手にデコードしても文法的に正しいHTMLには問題ないようです.
(とは言え,勝手にデコードされるというのも,あまり気持の良い話ではないですが).