应用场景如下:从api下载数据,json解析,存入字典,定期保存。重启程序需要加载保存的文本。

问题1:json中都是unicode串,存到文本里都是些\u***

解决:关闭ensure_ascii开关

json.dump(pub.listData,fp,ensure_ascii=False)

问题2:字典关键字用的数字,从文本load后变为unicode串

解决:

走了一点弯路,网上的解决方法,都是转换,把串转回utf-8,方法是

def byteify(input):

if isinstance(input, dict):

return {byteify(key):byteify(value) for key,value in input.iteritems()}

elif isinstance(input, list):

return [byteify(element) for element in input]

elif isinstance(input, unicode):

return input.encode('utf-8')

else:

return input

但发现,json相关的都是unicode,转不胜转。

最后解决方法,还是用unicode存,但是load后,加一个处理,把key转换为数值就行

pub.listData=json.load(fp)
     pub.listData={int(k):v for k,v in pub.listData.items()}

问题3:编码问题

解决:

默认情况下,用sys.getdefaultencoding()查看是utf-8

decode(code):把code转换为unicode

encode(code):把unicode转换为code

如果对一个非unicode格式的串,调用encode的话,则会用默认编码转化为unicode,再进行encode。系统默认编码为ascii,所以常常出错

设置默认编码:

在python的Lib\site-packages文件夹下新建一个sitecustomize.py,内容为:

# encoding=utf8

import sys

reload(sys)

sys.setdefaultencoding('utf8')

问题4:读入unicode的中文的处理

比如csv文件,excel正常,python读入数据类似:

[18]:'\xc2\xf2\xd2\xbb\xc1\xbf'

直接输出为乱码,需要解码再编码:

print df.columns[0].decode("gbk").encode('utf-8')

市场代码

Python27中Json对中文的处理的更多相关文章

  1. c#将http调用返回额json中的有关中文的unicode转换为中文

    c#将http调用返回额json中的有关中文的unicode转换为中文 中文转Unicode:HttpUtility.UrlEncodeUnicode(string str);转换后中文格式:&quo ...

  2. 将http调用返回json中的有关中文的unicode转换为中文

    在http调用时获取到的json数据中文是乱码的解决方法: 中文转Unicode:HttpUtility.UrlEncodeUnicode(string str);转换后中文格式:"%uxx ...

  3. 解决IE8 内置JSON.stringify,中文变unicode的问题

    转自:http://my.oschina.net/u/919074/blog/191131 项目中出现在IE下出现把json对象转为json串中文变成unicode的问题,最后经过排查,发现是IE8内 ...

  4. php中json_encode UTF-8中文乱码问题

    最近在接口代码当中用到过json_encode,在网上找到说json_encode编码设置为UTF-8中文就不会乱码,经验证这办法确实是有效果的,但是不知道为什么,代码在用过一段时间之后就不太管用了. ...

  5. Spring MVC3返回JSON数据中文乱码问题解决(转)

    Spring MVC3返回JSON数据中文乱码问题解决 查了下网上的一些资料,感觉比较复杂,这里,我这几使用两种很简单的办法解决了中文乱码问题. Spring版本:3.2.2.RELEASE Jack ...

  6. python json.dumps() 中文乱码问题

    python json.dumps() 中文乱码问题   python 输出一串中文字符,在控制台上(控制台使用UTF-8编码)通过print 可以正常显示,但是写入到文件中之后,中文字符都输出成as ...

  7. python2.7字典转换成json时中文字符串变成unicode的问题:

    参考:http://blog.csdn.net/u014431852/article/details/53058951 编码问题: python2.7字典转换成json时中文字符串变成unicode的 ...

  8. solr服务中集成IKAnalyzer中文分词器、集成dataimportHandler插件

    昨天已经在Tomcat容器中成功的部署了solr全文检索引擎系统的服务:今天来分享一下solr服务在海量数据的网站中是如何实现数据的检索. 在solr服务中集成IKAnalyzer中文分词器的步骤: ...

  9. C#中JSON序列化和反序列化

    有一段时间没有到博客园写技术博客了,不过每天逛逛博客园中大牛的博客还是有的,学无止境…… 最近在写些调用他人接口的程序,用到了大量的JSON.XML序列化和反序列化,今天就来总结下json的序列化和反 ...

随机推荐

  1. hdu 3061 最大权闭合子图

    属于模板题吧... #include <cstdio> #include <cstring> #include <vector> #define min(a,b) ...

  2. BZOJ5217: [Lydsy2017省队十连测]航海舰队 FFT

    被FFT的空间卡了半天 后来发现根本不用开那么大... 首先可以把包含舰艇的那个小矩形找出来 将它一行一行连接成一个串T 其中舰艇位置为1其他位置为0 将大矩形也连成串S 其中礁石为1其他为0 两个串 ...

  3. Linux下动态库和静态库的生成和使用

    1.准备头文件和源文件 hello.h #ifndef HELLO_H #define HELLO_H void hello(const char *name): #endif hello.c #in ...

  4. http状态码学习笔记

    当浏览者访问一个网页时,浏览者的浏览器会向网页所在服务器发出请求.当浏览器接收并显示网页前,此网页所在的服务器会返回一个包含HTTP状态码的信息头(server header)用以响应浏览器的请求. ...

  5. paypal对接

    paypal支付接口准备工作 首先去申请一个paypal账号,https://www.paypal.com/. 申请完毕并登录,进入https://developer.paypal.com/devel ...

  6. SpringBoot读取配置properties配置文件

    见:http://www.cnblogs.com/VergiLyn/p/6286507.html

  7. PostgreSQL修改数据库目录/数据库目录迁移

    说明:以9+版本为例,10+的版本只要把目录替换一下即可.迁移目录肯定是要停服的! 1.在数据库软件安装之后,初始化数据库时候,可以指定初始化时创建的数据库的默认文件路径 /usr/local/pgs ...

  8. IOS7开发~Images.xcassets

    from:http://blog.csdn.net/liufan321/article/details/9121241 新建项目,如下所示: 本文分享一下Images.xcassets的体验~_~ 1 ...

  9. USB PIC Programmer (Brenner8)

    http://uzzors2k.4hv.org/index.php?page=usbpicprog My Tait Serial programmer works alright, but not e ...

  10. Android的基本常用的短信操作

    1.调用系统发送短信界面(传入手机号码+短信内容) 2.隐藏发送短信(指定号码指定内容)(这里隐藏只是没有反写入数据库) 3.获得收件箱接收到的短信 4.Android屏蔽新短信通知提示信息:(Con ...