GAE-Datastore中文資料儲存問題
1. 中文資料可以unicode的方式存進datastore
ex:
from google.appengine.ext import db
from google.appengine.ext.db import polymodel
import urllib,sys
class Contact(polymodel.PolyModel):
phone=db.PhoneNumberProperty()
address=db.PostalAddressProperty()
class Person(Contact):
first_name=db.StringProperty()
last_name=db.StringProperty()
mobile=db.PhoneNumberProperty()
class Company(Contact):
title=db.StringProperty()
fax=db.PhoneNumberProperty()
strAddr=unicode('這是中文','utf-8')
p=Person(first_name='eric',last_name='abc',mobile=db.PhoneNumber('0920891999'),phone=db.PhoneNumber('0912123456'),address=db.PostalAddress(strAddr))
p.put()
c=Company(title='Foo Company',phone=db.PhoneNumber('091234567'),address=db.PostalAddress(strAddr),fax=db.PhoneNumber('09123456789'))
c.put()
2.資料取出的方式
ex:
for contact in Contact.all():
s='%s:%s'%(contact.phone.encode('utf-8'),contact.address.encode('utf-8'))
print s
儲存以unicode的方式,取出時以utf-8的方式顯示,要合併在同一個字串時,記得要將另一個字串的編碼也encode成utf-8