请问大家 在Flask中,是怎么传递list 到 jinja2 模板中输出的?我一输出就报错:UnicodeDecodeError

2012-12-28 21:29:54 +08:00
 barbery
完整报错信息:“UnicodeDecodeError: 'ascii' codec can't decode byte 0xe6 in position 0: ordinal not in range(128)”

我知道unicode(str, 'utf-8')后再传递过去就没事。。。但是从mysql中取到的结果是tuple,该不会是每次从mysql取到结果集 都要迭代一次转码吧???
我现在的做法是 获得结果集后 result= [unicode(row[1], 'utf-8') for row in data] 这样迭代一次转码后才能传递过去模板那里输出。。。我对此做法相当不满。。。求指教!!!
5186 次点击
所在节点    Python
5 条回复
BeanYoung
2012-12-28 23:08:13 +08:00
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
barbery
2012-12-28 23:49:28 +08:00
@BeanYoung 感谢啊。。。加了sys.setdefaultencoding('utf-8') 就可以了。。。请问一下是什么原理?为什么我加了 #coding=utf-8 不行,要sys.setdefaultencoding('utf-8')才行?
davidx
2012-12-29 00:40:36 +08:00
我感觉你从mysql过来的数据, 就不是unicode或者utf-8吧
linuxsand
2012-12-29 00:45:22 +08:00
@barbery #coding=utf-8 是指定该 .py 文件编码,若其中出现非 ascii 字符 python 会知道如何处理。

而后者,请用 help()
barbery
2012-12-29 12:50:09 +08:00
谢谢大家。。。结贴!!!

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/56099

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX