升级Google应用引擎程序以使用Unicode

3 投票
3 回答
1379 浏览
提问于 2025-04-11 09:31

我有一个简单的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了。感谢谷歌的团队提供了一个合理的接口。你不需要做任何额外的工作。

撰写回答