新規記事投稿 フォロー記事投稿 記事のキャンセル
From: Yasu.F <yasuf@big.or.jp>
Subject: Re: "&"はquery stringではエンコードが必要?
Date: 1999/03/18 07:19:47
Reference: mesh.npc.2/00582

# 全然npc.cgiと関係なくなってるけど…(^^;;

3月18日に、Shigeさんは書きました。

> HTMLとてSGMLの端くれであるからDTDによってparseできないものは
> documentかDTDに不具合があると言えるのでは?
> と言うことです。(許容範囲ではあると思います)

そうですね。で、わたしはこの件に関しては「documentのほうに不具合がある」と
思うのです。
まあ不具合とまで言い切ってしまえるほどでのものはないかも知れませんが、
少なくともSGML的に見れば不自然な書き方であることは確かですから。

HTML4.0の仕様書では「UAは知らない実体参照を単なる文字データとして扱うべき」と
なっているのは確かなのですが、これに頼っていて例えばたまたま
<A href="foo.cgi?st=xxx&lt=yyy"> と書いてしまうと、これはHTMLとして解釈
したとしても <A href="foo.cgi?st=xxx<=yyy"> という意味になってしまいます。

>#実体参照の記述に干渉するという意味でセパレータを";"にしよう
>#と言うことならば それは HTML document中に記述されるものに限った話しで
>#ユーザーエージェントが作成するquery string(と言うのかな?)には
>#適用されなくてもそれはそれで筋は通るのかな・・・?

# そういえばこれの出典はどこなんだろうと思って探してみたら、RFC1866 (8.2.1)
# なんですね(^^;; <知らんかったんかい

まあURIとして使えない文字ではありませんし、いままで標準として使われてきた
ものを変更するというのは大変な作業ですから、難しいところですね…。

>#その前にセパレータとして";"を使うことがどれだけ普及しているのか
>#分かりませんがね(^_^; CGI.pmは未対応だし

あれ、そうだったかな…と思ってPerl 5.005_02に附属のを見てみると、確かに
対応してませんね。対応してるのはcgi-lib.plのほうだけなのか…。