2012年5月9日

GAE-Datastore 中文数据储存的问题


 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

没有评论:

发表评论

BlogAD