我正在使用Google App Engine 2.5与Django模板和Webapp框架。
db.TextProperty,UTF-8,Unicode和Decode/Encode让我很困惑。我希望一些专家能提供一些建议。我已经谷歌了整整一晚上,但仍有很多问题。
我的目标是什么:
[utf-8 form input] => [Python, Store in db.TextProperty] => [When Needed, Replace Japanese with English] => [HTML, UTF-8]
根据这个回答 在Python中压缩Unicode字符串
# -*- coding: utf-8 -*-
需要将所有.py文件保存为utf-8格式。
这是我的代码:
#Model.py
class MyModel(db.Model):
content = db.TextProperty()
#Main.py
def post(self):
content=cgi.escape(self.request.get('content'))
#what is the type of content? Unicode? Str? or Other?
obj = MyModel(content=content)
#obj = MyModel(content=unicode(content))
#obj = MyModel(content=unicode(content,'utf-8'))
#which one is the best?
obj.put()
#Replace one Japanese word with English word in the content
content=obj.content
#what is the type of content here? db.Text? Unicode? Str? or Other?
#content=unicode(obj.content, 'utf-8') #Is this necessary?
content=content.replace(u'ひと',u'hito')
#Output to HTML
self.response.out.write(template.render(path, {'content':content})
#self.response.out.write(template.render(path, {'content':content.encode('utf-8')})
希望有Google App Engine工程师能看到这个问题并提供一些帮助。非常感谢!
type
来获取content
变量的类型:type(content)
将告诉您cgi.escape
返回的类型。 - ZeugmaUTF-8
格式。HTML 表单采用UTF-8
编码,且没有使用其他编码方式。 - Susan Mayercgi.escape
。永远不要这样做。 - Nick Johnsoncgi.escape
吗?那么请告诉我:https://developers.google.com/appengine/docs/python/gettingstarted/handlingforms中的`self.response.out.write(cgi.escape(self.request.get('content'))) `是什么意思? - Susan Mayer