技術的には低レベルな話です。環境クライアントサイドWIndowsXPIE7Firefox3.5サーバサイドLinux(CentOS)Apache2.?Python2.6.4DJango1.2b(リポジトリの最新版使った)MySQL5.?(今回関係ないけど、書いとく)発生事象サーバサイドの文字コードをutf-8で統一して設定してる。そんでIE7君がEUC-JPのHTMLを読み込んでPOSTすると、EUC-JP送っているようでDJangoのrequest.POSTで受けると文字化けする。いうか完全にぶっ壊れて\ufdddとなる。??ちなみにFirefox3.5だとutf-8で送ってくれて壊れない。回避策1(失敗)要件上、HTMLのmeta要素charset属性やHTML自体の文字コードはいじれない。form要素のaccept-charset属性に文字コードを指定するとうまくいくらしい記事を発見し、utf-8で検証。ブラウザのバッドノウハウ編]結果、IE7君はダメでした。euc-jpで送りやがった。パケットキャプチャのWiresharkでHTTPキャプチャみたりもした。ブラウザのバッドノウハウ編]に書いてあったので、検証。結果、IE7君はだめ。回避策2(失敗)今度はサーバサイドでエンコードすればいいんじゃね??ってことでトライしたけど、Djnagoに辿りついてる時点で文字列がぶっ壊れてu'\ufddd'だ...Apacheやmod_pythonが悪さしてそうでもないし...。頭がパンクしそうでお手上げ。回避策3(成功)困ったのでクライアントサイドとサーバサイドで連携し回避することに。JavaScriptのencodeURIComponentで処理した後、input要素のvalueにデータを格納し、form.submit()でPOSTした。クライアントサイドのJavaScript。アンクォートした後utf-8デコード。これすれば文字コードは関係なさそう。ドメインまたいだりしてる。Djangoでは一部CSRFをoffにした...。そもそもJavaScript動かなかったらPOSTできない。Apacheの処理、mod_pythonの処理、DjangoのHTTPRequestの処理をもっと追わないといけないな。疑問そもそもこの対応策以外によい策があるんでは...?愚痴ドメインまたいでるので、Ajaxのクロスドメインに抵触してたりして実装大変(ryHTMLのmeta要素やHTMLの文字コードをさわらせない外部のサービスを使ってたのが痛い。大規模じゃないんだから構築し直したい...。その外部のサービスがEUC-JP使ってるとかもう辛い。久々に叫びたくなった。実力不足に(ry追記tokibito氏が助け舟を出してくれた。WSGIHandler.request_classに独自実装し、回避したのを当てるとよいとのこと。こと湯本さんからご献本頂...2012-06-02PythonのStringIOをJSXで実装してみた。JSXという言語がリリースされたので、例のごとくPythonのString...2012-02-19PythonのStringIOをJavaScriptで実装してみた。id:rokujyouhitomaです。はて、Pytho...2010-05-24MeCabとMeCabPythonバインディングMeCabをインストールする機会があったので。環境...2010-05-16pydocみて気になったライブラリを触ってみた。情報セキュリティ系のfeedsPythonのセキュリティ系ツール、コードメトリクス解析ツール私は、偶然、街中で知人と出会うことが多いようです。Educateのキャリアパス、バッジ月別アーカイブ参加グループプログラミングはてなブログをはじめよう!rokujyouhitomaさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。