2009年5月9日土曜日

unicodeとstringだけじゃない、db.Textはまた別です

UnicodeとStringが別物という話はpythonの世界では有名なようですが




Unicode で萎えそうになったとき(orz)に思い出してほしい5つのこと - Solr, Python, MacBook Airより引用:


Unicode 関係でモヤモヤしたら思い出してください。





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 件のコメント:

コメントを投稿