Python处理Unicode字符时出现中文乱码的情况

Python处理Unicode字符时出现中文乱码的情况

Unicode字符时出现中文乱码

遇见\u开头的编码,如\u0032\u0030\u0031\u0039\u002D\u0031\u0031即为Unicode字符
例:\u003C 相当于<, \u003E相当于>
python3中最常用的转换方式是

str1 = '\u4f60\u597d'
# python3中只能先编码再解码,python2的话可以直接解码
print(str1.encode('unicode-escape').decode('unicode-escape'))

在这里插入图片描述
可如果先经过中文格式编码(UTF-8)再获取Unicode解码的话就会出现中文字符变成混乱符号的情况

# -*- coding: utf-8 -*-
str1 = '\u4f60\u597d'
# python3中只能先编码再解码,python2的话可以直接解码
print(str1.encode('unicode-escape').decode('unicode-escape'))

print(str1.encode('utf-8').decode('unicode-escape'))

在这里插入图片描述
原因:
当对字符串进行编码后,要对其解码变回中文,这是坑就来了,默认先转的中文识别的是gbk格式这才导致我们得到了乱码而不是我们想要的值。

解决方法:
通过raw_unicode_escape,将此str转化为bytes, 再decode为str。从而规避直接转中文导致格式变成gbk的坑

# -*- coding: utf-8 -*-
str1 = '\u4f60\u597d'
# python3中只能先编码再解码,python2的话可以直接解码
print(str1.encode('unicode-escape').decode('unicode-escape'))

print(str1.encode('raw_unicode_escape').decode('unicode-escape'))

在这里插入图片描述
实际应用场景
个人遇见这个问题是在访问一个html页面后,返回给我的是Unicode格式并带中文的标签内容,这时候我就需要将返回过来的内容转换成正常的html标签格式,再从里面获取我需要的标签。
PS:个人遇见的一个内容都是用document.write渲染的页面踩的这个坑
将字符串用utf-8编码再用unicode-escape解码会导致如下情况
str1.encode('utf-8').decode('unicode-escape')

现在打印:// 隐藏备案信息展示
正常情况:// 隐藏备案信息展示
在这里插入图片描述

其中的中文字符都出现该问题,就可以用到上述方法解决。

转载:
本文作者: 红 后
本文链接: https://www.cnblogs.com/Red-Sun/p/17219414.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值