2012年4月15日日曜日

[python]いつもの文字コードにまつわる変換エラー

    search_word_end = search_word + u'\uFFFD'.encode('utf-8')
UnicodeDecodeError: 'ascii' codec can't decode byte 0xef in position 0: ordinal not in range(128)

gaeで文字によるレンジスキャンしようとして
pythonの文字コード的な初歩的エラーで引っかかった。

なんぞこれ?

開発環境では動いていたからバージョンとかのせい?


わかったー。

search_word + u'\uFFFD'.encode('utf-8') 





のうち、search_word をself.request.get('keyname')で取得してたんだけれど、
ローカルではstr型でとれてるものだとおもってstr型にして + してけど、
実はunicode型で、unicode + str でseachをGAEデフォルトのasciiコーデックでデコードしようとしてエンコーディングに失敗していたっぽい。

なので、あえてencodeしてたところをunicodeのままほったらかしにやればいけた。

この苦しみ、ascii圏の人にはわかるまい。


0 件のコメント:

コメントを投稿