TEXTAREA内の半角スペース
-
0 名前: Strata : 2005/09/23 19:19
- はじめまして。テキストエリアの初期値内に を記述した場合の扱いについて質問があります。
例えば他の実態参照 < や > では送信データ上通常の < や > に置き換わるみたいですが、半角スペースの場合は実態参照の文字列「 」がそのまま送信されてしまいます。
この扱いの違いは何でしょう?
また、テキストエリアの初期文字列に半角スペースの実態参照 を使用するのはHTMLの仕様上妥当なのでしょうか?
どなたかご教授お願いいたします。
-
1 名前: Bill閣下 : 2005/09/23 19:19
- HTMLの仕様では、
TEXTAREAの中身は#PCDATA(Parsed Character Data)、
つまりSGML的にParsedされる文字データで、
実態参照は展開されて対応する文字に置き換えられます。
を使用しても妥当です。
<!ELEMENT TEXTAREA - - (#PCDATA) -- multi-line text field -->
送信されたデータをどのように処理するのかは
HTMLの仕様の範疇ではないと思います。
http://www.w3.org/TR/1999/REC-html401-19991224/interact/forms.html#h-17.3
の下の方に
Note. Further discussion on the behavior of servers that receive form data is beyond the scope of this specification.
と書かれてあります。
-
2 名前: 愛浦憂馬 : 2005/09/23 19:19 [URL]
- よくは分からないんですが・・
「&nbsp;」 とか
「半角スペースをそのまま混ぜる」 とかではどうですか?
-
3 名前: Strata : 2005/09/23 19:19
- Bill閣下さん、丁寧なご説明ありがとうございます。リンク先の方、参照させていただきました。
HTMLの仕様上問題なしとの事ですが、現在の環境(IE6.0の送信データをPerl5.8で処理)ではテキストエリアに元から含まれる と後から入力した の区別が付かないので、
やはり通常の半角スペースを記述することにします。
愛浦憂馬さん、ありがとうございます。
この場合、後者の「半角スペースをそのまま混ぜる」のが適当みたいです。
-
4 名前: Pid : 2005/09/23 19:19
- そもそも (U+00A0, )はいわゆる半角スペース(U+0020)ではありません。
> 半角スペースの場合は実体参照の文字列「 」がそのまま送信されて
というのはちょっと信じられなかったので,テストしてみました。
【前提】
・>>0 は method="get",もしくは method="post" enctype="x-www-form-urlencoded" の場合の話である。
・スペースは + で置き換えられる。
(→ http://www.asahi-net.or.jp/%7Esd5a-ucd/rec-html401j/interact/forms.html#h-17.13.4.1)
【実験】
<!-- 「小なり記号・スペース・非改行空白・スペース・大なり記号」を,UA がどうパーセント符号化するか実験 -->
<form action="#test" method="get">
<p>
<textarea cols="20" rows="10" name="test">< ></textarea>
<input type="submit" value="Submit" />
</p>
</form>
【結果】
(a) は ISO-8859-1,(b) は Shift_JIS/EUC-JP の場合,(c) は UTF-8 の場合。
Netscape Navigator 4.0.7
-(a). %3C+++%3E
-(b). %3C+++%3E
-(c). %3C+++%3E
Gecko(Mozilla 1.7,Firefox 1.0.4,Epiphany 1.4.8)
-(a). %3C+++%3E
-(b). %3C+++%3E
-(c). %3C+%C2%A0+%3E
MSIE win5.5, win6.0
-(a). %3C+%A0+%3E
-(b). %3C+%26nbsp%3B+%3E
-(c). %3C+%C2%A0+%3E
Konqueror 3.3.2(Safari も?)
-(a). %3C+%A0+%3E
-(b). %3C+%26%23160%3B+%3E
-(c). %3C+%C2%A0+%3E
Opera 7.5.3
-(a). %3C+%A0+%3E
-(b). %3C+%26%23160%3B+%3E
-(c). %3C+%C2%A0+%3E
Amaya 8.5
-(a). %3C+%A0+%3E
-(b). %3C+%00+%3E
-(c). %3C+%C2%A0+%3E
Lynx 2.8.5
-(a). %3C+%A0+%3E
-(b). %3C+%A0+%3E
-(c). %3C+++%3E
w3m 0.5.1
-(a). %3C+++%3E
-(b). %3C+++%3E
-(c). %3C+++%3E
私としては を %A0(%C2%A0)と解釈してほしかったのですが,スペースと同一視する実装もあるのですね。少なくとも MSIE で「Shift_JIS/EUC-JP の場合に」nbsp という文字列が出て来るのはバグ(でなければ手抜き実装)のような気がします。Konqueror/Opera も微妙なので,今のところ は避けた方が良いのかもしれません。
-
5 名前: Strata : 2005/09/23 19:19
- Pidさん、大変分かりやすいご解説ありがとうございます。
と半角スペースを完全に混同していました。すみません。
同じ実態参照なのに だけ他のものと扱いが異なるのには何か特殊な理由があるのでは?と暫く引っ掛かっていたのですが、
単にブラウザによって仕様の解釈が違う(もしくはバグの)ケースなんですね。お陰さまで疑問がとけました。