2006年05月28日 22:55 [Edit]

multipart/form-data をお忘れなく

趣旨には賛同するけど私的には森林太郎を救って脚気の犠牲者の恨みを買いたくはないよなあ。

革命の日々! プロジェクト「セーブ・ザ・鷗外」
いかついオッサンが「たすけてー」と泣いている様は想像するだに楽しいのでこうしてみた。

んで、本題。

革命の日々! プロジェクト「セーブ・ザ・鷗外」
HTMLの規格上、ブラウザは文字列をPOSTするのに、 のmethod属性を設定しないと文字列を URLEncodingというエンコーディングを行ってからPOSTします。

とは、実は今では限りません。<form>タグでenctypeの指定をはしょるとapplication/x-www-form-urlencodedになりますが、もう一つ、multipart/form-dataというものが存在します。主にファイルのアップロードの際に使われているMIME Typeですが、ファイルのアップロードでなくても使う事ができます。

以下、論より証拠。

multipart/form-data
application/x-www-form-urlencoded

CGI.pmをはじめ、今時のCGI関連のモジュールはたいていどちらもうまく扱えますが、この点留意が必要です。

あとこれを見るとお気づきだと思いますが、multipart/form-dataの場合、データは加工なしでそのまま送られます。

ファイルのアップロードぐらいしか使われていないmultipart/form-dataですが、「受け入れ態勢」は整っているわけですし、この通り文字化け回避の手段にもなりますし、もっと使われていもいいと思います。

Dan the Man with Too Many Encodings to Support


この記事へのトラックバックURL

この記事へのトラックバック
前回の記事について、説明が不足していたようで、404 Blog Not Found様からmultipart/form-data を忘れている とお叱りを頂いてしまいました。 えっと、誤解です。 multipart/form-dataを使っても状況〈
FirefoxのEUCの独自拡張のセンスが最低な件について【革命の日々!】at 2006年05月29日 20:23
この記事へのコメント
ああ、なぜ情報が入れ違ったのか分かりました。
えとですね。このCGI.pm なiframeはUTF-8なページなんですよ。
だから
application/x-www-form-urlencoded のほうで、鷗外と入力すると
t=%E9%B7%97%E5%A4%96
となります。

で、UTF-8だと、あらゆる文字が数値文字参照の必要はないから、multipart/form-dataのほうでも、数値文字参照じゃないように見える。と

あたりまえですね。
でも我々の住んでいるブログ界はEUCがデファクトなので、サイトをUTF-8で作り直せってのは非現実的じゃないかしらん。というのが主張なのですわ(n'ω'`)

だって、トラックバックPINGって内部に文字コード情報がないからEUC決めうちで成り立ってますもん
(と、さっき自分のトラックバックをパケットキャプチャーして始めてしりましたよ。あたしゃ)
Posted by kosaki at 2006年05月29日 20:36