关于 flask 中输出中文 unicode

2015-08-14 14:10:20 +08:00
 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的声明。

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

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

唉,凌乱了。
ccmao755
2015-08-18 01:24:45 +08:00
sql server 的问题。 done !
ccmao755
2015-08-18 14:27:22 +08:00
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