python json转换为dict的编码问题_python处理json中的unicode中文编码问题.

大概就是从服务器接口传回一个josn格式的包

{“from”:”en”,”to”:”zh”,”trans_result”:[{“src”:”East Berlin, 1975″,”dst”:”\u4e1c\u67cf\u6797\uff0c1975″}]}

这个样子,然后我用eval()处理了这个包

u = response.read() #从服务器接口传回的

dict_mid = eval(u) #这里通过eval()将这个包变成了字典

dict_trans = dict_mid.get('trans_result') #然后得到trans_result中的值,值是一个列表,只有一个元素就是{"src":"East Berlin, 1975","dst":"\u4e1c\u67cf\u6797\uff0c1975"}

dict_trans_mid = dict_trans[0] #然后获得这个元素...大牛原谅这种笨重的处理

result_mid = dict_trans_mid.get('dst') #然后这个元素呢又是一个字典,就又获得dst的值

result = (unicode(result_mid, 'utf8')).encode("UTF-8") #想把这个\u4e1c\u67cf\u6797\uff0c1975编码成utf8,然后输出

print result #可是输出结果还是\u4e1c\u67cf\u6797\uff0c1975

假如把这个\u4e1c\u67cf\u6797\uff0c1975复制到终端python里面

print (u'\u4e1c\u67cf\u6797\uff0c1975').encode("UTF-8")

是可以获得中文输出的

所有来问问各位大牛,怎么在程序中输出中文

由于我用的Python3.X,所以直接打印出来就行了……

即便你使用的是Python2.X,也还有救。可以使用__future__模块嘛~

http://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/001386820023084e5263fe54fde4e4e8616597058cc4ba1000

刚刚大神提供的解决方案,谢谢@yibohu1899

你获得的u是json格式吧?如果是的话dict_mid = eval(u) 这里不要使用eval来转化为字符串,试试用json.loads(u)

import json

u = response.read()

ju = json.loads(u)

result_mid = ju['trans_result']['dst']

# 这里可以先使用type(result_mid)看一下它是不是一个unicode,如果是的话再用encode转成你想要的编码

print result_mid.encode("UTF-8")

如果你在windows下的话打印出来的应该是乱码,在cmd中要使用encode(‘gbk’)来打印

我觉得你上面的问题出在使用eval(u)函数,你使用eval后要将得到的json转化为了字典,但是也将里面的

'\u4e1c\u67cf\u6797\uff0c1975'

类型转变了string,但是使用json.loads()可以将

'\u4e1c\u67cf\u6797\uff0c1975'

转化成unicode类型

u'\u4e1c\u67cf\u6797\uff0c1975'

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值