python unicode乱码_python Unicode, 中文字符显示乱码问题

python中编码问题是一个必然会遇见的问题,尤其是中文编码,一不小心就出现乱码。

为此,一个绝对不能绕过的模块codecs, 可以看出python对编码这块的支持甚是强大。

另有附带codecs代码示例的博文,顺着文章一通敲下来,python中的编码问题自然就不是问题了.

在使用python写一个简单爬虫的过程中,我遇见一个相关问题,也算是比较奇葩了,瞎折腾了一晚上才算是解决。

本来抓取网页内容编码是 "GB2312", 传入值以后使用decode('gb2312', 'ignore')后解码为unicode,再使用Beautiful Soup进行解析处理,解析结构存入list, dict的复合结构中.

最后直接使用json.dumps()返回string结果, 发现中文没有正确显示,但也并非乱码, 而是类似"\u5b9e\u8df5\u8fdc"的字符.

以为是编码不对,但尝试过其他各种编码方式也都没有正确显示中文,一直到网上搜索到decode("unicode_escape")这一句才解决问题.

个人理解为:存在于list,dict等容器中的unicode字符就是一这种编码方式存在的,单独打印某一项的时候,会显示成中文字符,但是直接打印整个list的时候,就不会做字符映射以正确显示中文,必须使用decode("unicode_escape").

这里也是因为我自己偷懒,直接使用json.dumps()将整个list的内容一股脑打印出来,图方便,反倒引入了这么一个问题,若是按照list的结构,逐项输出,就不存在这类中文字符显示异常的问题了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值