下面这段文章是我转载网友的,看了这部分文字,我才知道以前我所遇到的问题不是我一个人遇到的。我的写法及遇到的情况跟他的一模一样。不过我想这不是终极办法,还是应该多看看别人的源码,看看别人是怎么解决的。

3:中文的问题。
缺省情况下,数据库编码是ASCII编码,存入中文(UTF8编码)时会出现Bug,尤其是对于不太注意编码的朋友,可以参考《 Python中使用中文》。在编写程序时最好将所有的文件(程序文件、静态HTML模板等)都用统一编码方式,推荐用UTF-8。

还有,当从HTML的Form中接收到字符串数据的时候,一定要将送来的数据显式编码为UTF-8,如self.request.get('memo').encode('utf-8'),否则也会出问题。

另外,为了解决中文写入数据库时出错的问题,可以在写入数据库前做如下操作:

  1.     import sys
  2.      reload(sys)
  3.      sys.setdefaultencoding('utf8')

或者

  1.      code = sys.getdefaultencoding()
  2.     if code != 'utf8':
  3.          reload(sys)
  4.          sys.setdefaultencoding('utf8')

其他的方法都试了,不太好使,只有这个非常管用!还有个奇怪的事情,GAE的开发环境不支持重复reload,会不能渲染网页,也就是说第一种方法会不能正常工作。所以最好用第二种方法,这样的话第一次刷新会出问题,后面刷新就不会有问题了。GAE的运行环境这两种是相同的,但是较长时间没有登陆网站的话偶尔还是会出现刷新白屏的Bug,这确实是由于重新载入sys造成的,所以首页最好不要reload sys,需要存入数据库的时候才重新载入sys并设置UTF-8为缺省编码。