解决Python2.x中文乱码问题

最近解决项目中遇到的python输出中文乱码问题,记录一下。

  1. 后端response content-type为application/json,python直接print显示没有问题
  2. 因需要使用JSON中部分字段内容,通过JSON load为dict后再输出就乱码
  3. conn = httplib.HTTPConnection(ip, port)
    conn.request('POST', url, params)
    response = conn.getresponse()
    
     # 此处获取后后端返回的JSON字符串
    response_text = response.read()     
    
    # JSON load 后变为dict类型,由于python2.x内部采用ASCII编码,此时中文已变成u'\xxxx'形式
    json_dict = json.load(response_text )  
    
     # 按照默认参数将dict转换为string,中文已变成ASCII码形式
    json_string = json.dumps(json_dict ) 
    
    # 指定ensure_ascii=False, 所有的非ASCII码字符都不会被转义,以unicode字符形式输出
    json_string = json.dumps(json_dict, ensure_ascii=False) 
    #上述方式直接print时不存在问题,在class 中 __str__ (类似于Java toString())方法中却行不通
    
    # 按照UTF-8编码方式对unicode字符进行编码
    json_string = json.dumps(json_dict, ensure_ascii=False).encode("utf-8")
    
    # 得到与原始值相同的输出内容
    print json_string 
    

# 具体请参考json.dumps() 函数说明

https://docs.python.org/2/library/json.html

json.dumps(objskipkeys=Falseensure_ascii=Truecheck_circular=Trueallow_nan=Truecls=Noneindent=Noneseparators=Noneencoding="utf-8"default=Nonesort_keys=False**kw)

Serialize obj to a JSON formatted str using this conversion table. If ensure_ascii is false, the result may contain non-ASCII characters and the return value may be a unicode instance.

# 示例如下:


  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值