Unicode で萎えそうになったとき(orz)に思い出してほしい5つのこと - Solr, Python, MacBook Airより引用:
Unicode 関係でモヤモヤしたら思い出してください。
- Unicode と UTF-8 はまったくの別物であることを認識しよう。
- Python プログラム内部で使うときは Unicode で統一しよう。
- プログラムから外部に書き出すときは UTF-8 に変換しよう。
- self.request.get()で得られるデータの文字コードは Unicode だよ。
- urlfetch.fetch()で得られるデータの文字コードは、不定だよ。
GAEにはもう一つテキストを表す型があります。
ストレージに長い文字列を保管することができるTextPropertyがそれです。
一見するとStringと同じように動作するので紛らわしいのですが、直接Unicodeに変換することができず、一度stringに変換してあげる必要がありますので注意が必要です。
from google.appengine.ext import db
text = db.Text(u'あいうえお')
#これはエラー
#print text
#stringへ変換はOK
str = text.encode('utf-8')
print type(str) #
#unicodeへ直接変換できない
#uni = text.decode('utf-8')
#stringへencodeしてからdecodeしてunicodeへ変換可能
uni = text.encode('utf-8').decode('utf-8')
print type(uni)
0 件のコメント:
コメントを投稿