关于 flask 中输出中文 unicode

2015 年 8 月 14 日
 ccmao755

flask + pymmsql
render_template 返回的是([‘中国’,123],[‘深圳’,234]) 这样2个list在一个tuple之中。 那么返回个template的时候(显示明细),我用a[0][0]本来想输出 中国,但是输出的是unicode字符。

我在jinja2 用decode(utf-8)以及render_template也用decode('utf-8')都是显示的16进制的unicode显示,在console里可以 用print a[0][0] 显示正确的中文。

请问大家都是如何处理的呢?谢谢! pymssql连接已用utf8连接,py文件也做了utf8的声明。

13939 次点击
所在节点    Flask
10 条回复
aiver
2015 年 8 月 14 日
这个和python的版本也有些关系,python3中默认的字符串格式就是unicode了,而python2里面字符串需要加上前缀u才是uincode字符串。如果楼主环境是python2,render_template返回的话在字符前面都加上前缀u,然后在template里面显示的时候,用a[0][0].decode('gbk')试试。
mashpolo
2015 年 8 月 14 日
试试json模块的dumps方法
hupeng
2015 年 8 月 14 日
[u‘中国’,123],[u‘深圳’,234]
awanabe
2015 年 8 月 14 日
json.dumps(obj, ensure_ascii=False)

试下
huson
2015 年 8 月 14 日
要加u
C0VN
2015 年 8 月 14 日
py文件里的中文字符都加上u吧,
luzjoy
2015 年 8 月 14 日
html 文档的编码也改成utf-8
ccmao755
2015 年 8 月 17 日
html 、 py 等都统一成 utf-8 的了。没有用 ajax ,实际就是直接 render 到模板。 decode gbk 后会显示乱码。在 list 前加 u 这个,因为是数据库直接返回的,我也看了是( unicode ) utf8 的返回值,所以不用加 u 。

唉,凌乱了。
ccmao755
2015 年 8 月 18 日
sql server 的问题。 done !
ccmao755
2015 年 8 月 18 日
sql server 的 vchar 字符的问题,最后改成 nvchar 就没问题了。 凌乱!

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

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

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

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

© 2021 V2EX