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的声明。
1
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')试试。
|
2
mashpolo 2015-08-14 15:34:48 +08:00
试试json模块的dumps方法
|
3
hupeng 2015-08-14 15:57:08 +08:00
[u‘中国’,123],[u‘深圳’,234]
|
4
awanabe 2015-08-14 16:21:33 +08:00
json.dumps(obj, ensure_ascii=False)
试下 |
5
huson 2015-08-14 16:29:50 +08:00
要加u
|
6
xavierskip 2015-08-14 16:37:55 +08:00
py文件里的中文字符都加上u吧,
|
7
luzjoy 2015-08-14 17:07:33 +08:00
html 文档的编码也改成utf-8
|
8
ccmao755 OP html 、 py 等都统一成 utf-8 的了。没有用 ajax ,实际就是直接 render 到模板。 decode gbk 后会显示乱码。在 list 前加 u 这个,因为是数据库直接返回的,我也看了是( unicode ) utf8 的返回值,所以不用加 u 。
唉,凌乱了。 |
9
ccmao755 OP sql server 的问题。 done !
|
10
ccmao755 OP sql server 的 vchar 字符的问题,最后改成 nvchar 就没问题了。 凌乱!
|