2010年6月10日木曜日

Google App Engine / Python での Shift_JIS 問題

ガラケー向けのサービスをGAEで開発していたときに直面した問題を。

GAEでクエリ文字列やPOSTされたデータを取得する際には、下記のメソッドを使います。

self.request.get('hoge')

しかし、文字コードがShiftJISの場合、何故か取得出来ない。
UTF-8は取れるのにぃ。

こんな時は、GETの場合はQUERY_STRINGを、POSTの場合はBODYを調べる。

self.request.query_string
self.request.body

すると、ここまでは値が来ている。
文字コードがAsciiかUTF-8じゃなかったら捨ててると見た。

そこで、QUERY_STRINGまたはBODYから直接文字列を取り出す。
その文字列をunquoteして、decode('cp932')すれば無事取得できる。

まさか、ここでコケるとは思わなかったので、マジでビビった。

0 件のコメント: