[PHP-users 8299] Re: GET メソッドでの文字化けについて
Yasuo Ohgaki
php-users@php.gr.jp
Wed, 26 Jun 2002 19:05:18 +0900
大垣です。
>> ブラウザが POST する文字コードは、ページが記述されている文字コードに
>>合わせるというのは、まぁ一般的な挙動だと思いますが、GET に関してはその
>>ような前提も全くないのが現状だと思います。
>
>
> ブラウザからサーバーに送られる文字コードは基本的には信用していません。
> 上記の用にPOST する文字コードにかぎってページ(HTML)自体の文字コードで
> 送信されるという話ははじめて聞きました。これは確かでしょうか?
私の記憶では仕様です。が、いいかげんなエンコーディングで送
信してくる古い(?)ブラウザがあるようです。
HTMLの仕様ではフィールド毎にエンコーディングを指定
する事もできます。この機能はヨーロッパでは便利かもし
れませんが、日本は必要ない機能と思います。
> GET で前提がないのはHTTP の仕様なのでしょうか?
HTTPではなく、HTMLの仕様なのでHTML4.0.1の仕様を見てみ
ました。
http://www.w3.org/TR/1999/REC-html401-19991224/
の 17.13.3 Processing form dataには
=======
Step three: Encode the form data set
The form data set is then encoded according to
the content type specified by the enctype
attribute of the FORM element.
=======
と書かれています。この事からHTML4ではGETもContent-Type
と同じ文字エンコーディングを使う事になっていると理解してい
ます。
# DTDを宣言をしてもブラウザいい加減なエンコーディングを送って
# くるのは自由です(ブラウザが古いとか)
# HTML 3.2や2.0がどうなっているか私は覚えていません :)
>
>
>> 日本語を GET で渡すということも、よほどの理由がなければそもそもやら
>>ないような...。
>
>
> よく,リンクで日本語を渡しているサイトを伺います。
日本語をURLエンコードなしで渡しているという事でしょうか?
IEでは気前よく自己判断してくれて動作するかもしれませんが、
普通はエンコードして渡します。(というか標準ではエンコード
する事になっています)
> その他,メソッドをGET にする理由としてキャッシュの問題もあります。
> IE で「戻る」ボタンにてページを戻る際によく起こる「ページの期限きれ」の問題を
> 回避する為にGET メソッドは多用します。
今はGETの時におかしなエンコーディングで送信するブラウザ
は死滅したと思います。(と願っています。PDA等はどうなん
でしょうか?)
日本語テキストを取り扱い、石橋を叩いてわたる場合はPOST
が良いと思いますが、GETでも普通は問題ありません。
PS:仕様に疑問をもった場合、自分で読まれる事をお奨めします。
かなりいい勉強になります。
--
Yasuo Ohgaki