非常基本的Unicode Python我无法在我的Google App Engine main.py concern>中显示来自我的自定义TinyWebDB数据库(用UTF-8编码的CSV文件)的web端的正确的拉丁语口音:
在网络上:标签=滚珠轴承/值=旋转\u00e0billes => NOK!
在安卓手机上: tag =滚珠轴承/ value = roulementàbilles => OK!
注意:另外,如果我在main.py文件中引入了任何拉丁字符,在运行它时会收到一条错误消息。
解决方案是什么?
摘自我的代码:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import codecs
class StoredData(db.Model):
tag = db.StringProperty()
value = db.StringProperty(multiline=True)
date = db.DateTimeProperty(required=True, auto_now=True)
def get_value(self, tag):
entry = db.GqlQuery("SELECT * FROM StoredData where tag = :1", tag).get()
if entry:
value = entry.value
else:
value = "No result"
WritePhoneOrWeb(self, lambda : json.dump(value, self.response.out))
#### Write response to the phone or to the Web depending on fmt
#### Handler is an appengine request handler. writer is a thunk
#### (i.e. a procedure of no arguments) that does the write when invoked.
def WritePhoneOrWeb(handler, writer):
if handler.request.get('fmt') == "html":
WritePhoneOrWebToWeb(handler, writer)
else:
handler.response.headers['Content-Type'] = 'application/jsonrequest'
writer()
#### Write to the Web (without checking fmt)
def WriteToWeb(handler, writer):
handler.response.headers['Content-Type'] = 'text/html;charset=UTF-8'
handler.response.out.write('<html><body>')
writer()
WriteWebFooter(handler, writer)发布于 2012-06-28 04:22:44
我在代码中添加了:
value = unicode(value)
value = value.encode('ascii','xmlcharrefreplace')而且它工作得很完美。
菲利普
https://stackoverflow.com/questions/11063678
复制相似问题