[PHP-users 8298] Re: GET メソッドでの文字化けについて

KOYAMA Tetsuji php-users@php.gr.jp
Wed, 26 Jun 2002 18:38:45 +0900


  小山です。

At Wed, 26 Jun 2002 18:00:19 +0900,
岩田大樹 wrote:
> ブラウザからサーバーに送られる文字コードは基本的には信用していません。

  それならばなおのこと、

> >   自動判別には、常に誤認識の危険がつきまといます。それが嫌ならば
> > http_input を pass にして変換を行わないのが確実です。
> 
> 確かにそうかもです。が、せっかくの自動判別機能。是非使いたいとは思います。

自動判別に頼るのは危険ではありませんか?

  自動判別を使わずに文字コードを判断する方法としては、ダミーの文字列を
hidden で埋め込んでおいて、その値を元に入力エンコーディングを推測する
という手法が古くから使われていますし、現在でも有効だと思います。折衷案
としては、そのダミーの文字列で自動判別するというのも比較的有効でしょう。

> >   ブラウザが POST する文字コードは、ページが記述されている文字コードに
> > 合わせるというのは、まぁ一般的な挙動だと思いますが、GET に関してはその
> > ような前提も全くないのが現状だと思います。
>
> ブラウザからサーバーに送られる文字コードは基本的には信用していません。
> 上記の用にPOST する文字コードにかぎってページ(HTML)自体の文字コードで
> 送信されるという話ははじめて聞きました。これは確かでしょうか?
> GET で前提がないのはHTTP の仕様なのでしょうか?

  いいえ、HTTP の仕様には送信文字コードを何にするかの取り決めはありま
せん。POST 云々に関しては、そのように実装しているブラウザが比較的多い
というだけの話です。

> その他,メソッドをGET にする理由としてキャッシュの問題もあります。
> IE で「戻る」ボタンにてページを戻る際によく起こる「ページの期限きれ」の問題を
> 回避する為にGET メソッドは多用します。
> そのときにフォームで日本語を入力しないなんてことはありませんよね?
> このような場合にGET を用いるのは正論ではないでしょうか?

  経験からいえば、入力に GET を使用するという手段を用いなくても、ペー
ジ期限切れの問題は回避できます。代替手段としては、ページ構成の見直しだっ
たり、セッションの有効活用だったりしますが。

-- 
	小山 哲志@ビート・クラフト
	koyama@beatcraft.com
	koyama@hoge.org