網頁

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