升级Google应用引擎程序以使用Unicode
我有一个简单的Google App Engine应用,是用普通字符串写的。现在我意识到我想让它支持unicode(也就是多种语言的字符)。这样做会有什么需要注意的地方吗?我在想我现在已经在数据库里的所有字符串(这些都是来自真实用户的,我不想让他们不高兴)。
3 个回答
1
在存储到 db.TextProperty() 时,你需要使用 db.Text(),像这样:
instance.xml = db.Text(xml_string, encoding="utf_8")
如果字符串没有 BOM(字节顺序标记),你还需要指定正确的编码。比如说,当你从 XML 流中获取到意外的 Unicode 数据时,就需要这样做。
我在使用亚马逊的产品 API 时遇到过这个问题。
还有,谷歌的 urlfetch 在处理这个流时也出现了 Unicode 问题。所以我最后选择使用 minidom 的 parse() 函数,而不是 urllib.urlopen() 返回的流的 parseString(),这样可以解决这个问题:
response = urllib.urlopen(url)
xml = minidom.parse(response)
1
这个数据存储系统内部会把所有的字符串都用一种叫做unicode的方式来保存。
2
Alexander Kojevnikov 说:“数据存储内部把所有字符串都用unicode格式保存。”
换句话说,你的应用程序已经在各个地方都使用unicode了。感谢谷歌的团队提供了一个合理的接口。你不需要做任何额外的工作。