【python】python 转换为json时候 汉字编码问题

来源:互联网 发布:松下plc编程实例 编辑:程序博客网 时间:2024/05/18 07:51

simplejson官网doc:http://simplejson.googlecode.com/svn/tags/simplejson-2.1.1/docs/index.html


有这样一个需求:

      需要一个json 文件 数据从数据库里查询出来

1. 设置文件头

     

Python代码  收藏代码
  1. # -*- coding:utf-8 -*-  

  

 

2. 连接数据库 将数据库连接数据库的编码设置为utf8    

Python代码  收藏代码
  1. db = MySQLdb.connect(host='数据库,user=用户名,passwd=密码,db='数据库, init_command="set names utf8" )  

 

3.  查询出来的数据转化为json

   

Python代码  收藏代码
  1. t = json.dumps(r, ensure_ascii=False)  

 

     注意: ensure_ascii=False

        

           python 的api是这样解释的:

 

Python代码  收藏代码
  1. If ensure_ascii is False (default: True), then some chunks written to fp may be unicode instances, subject to normal Python str to unicode coercion rules. Unless fp.write() explicitly understands unicode (as in codecs.getwriter()) this is likely to cause an error.  

 

PS : e文不好 就不再这里误导了。

      如果 不加 ensure_ascii=False  输出的 t 如果有汉字的话都默认给转换成一堆编码 如果加上的话 就都能正常显示变成了汉字

 

例如:

     不加的话: t = json.dumps(r)

          

Html代码  收藏代码
  1. [{"category": {"label": "\u65b0\u8f66"}, "title": "\u5168\u65b0\u8d77\u4e9a\u798f\u745e\u8fea\u8def\u8bd5\u8c0d\u7167\u66dd\u5149 \u6216\u4e3a\u5b9a\u540dK3", "url": "http://auto.sohu.com/20120523/n343878794.shtml", "source": "\u641c\u72d0\u6c7d\u8f66", "time": 1337740004, "imgUrl": ""}, {"category": {"label": "\u65b0\u8f66"}, "title": "\u65b0\u5965\u8feaQ7/Q8\u66f4\u591a\u4fe1\u606f\u66dd\u5149 \u5c06\u57fa\u4e8eMLB\u5e73\u53f0", "url": "http://auto.sohu.com/20120523/n343873150.shtml", "source": "\u641c\u72d0\u6c7d\u8f66", "time": 1337737913, "imgUrl": ""}]  

 

     加上的话:  t = json.dumps(r, ensure_ascii=False)

    

Html代码  收藏代码
  1. [{"category": {"label": "新车"}, "title": "全新起亚福瑞迪路试谍照曝光 或为定名K3", "url": "http://auto.sohu.com/20120523/n343878794.shtml", "source": "汽车", "time": 1337740004, "imgUrl": ""}, {"category": {"label": "新车"}, "title": "新奥迪Q7/Q8更多信息曝光 将基于MLB平台", "url": "http://auto.sohu.com/20120523/n343873150.shtml", "source": "汽车", "time": 1337737913, "imgUrl": ""}]