Python3之乱码\xe6\x97\xa0\xe6\xb3\x95处理方式


Posted in Python onMay 11, 2020

查看字符编码:

import chardet
response = chardet.detect(b'\xe5\xbd\x93\xe5\x89\x8d\xe7\x9b\xae\xe5\xbd\x95\xe4\xb8\x8b\xe6\x89\x80\xe6\x9c\x89\xe6\x96\x87\xe4\xbb\xb6\xe5\x90\x8d\xe6\xb1\x87\xe6\x80\xbb\xe5\x88\x97\xe8\xa1\xa8')
print(response)

{'encoding': 'utf-8', 'confidence': 0.99, 'language': ''}

乱码字符转换:

response = b'\xe5\xbd\x93\xe5\x89\x8d\xe7\x9b\xae\xe5\xbd\x95\xe4\xb8\x8b\xe6\x89\x80\xe6\x9c\x89\xe6\x96\x87\xe4\xbb\xb6\xe5\x90\x8d\xe6\xb1\x87\xe6\x80\xbb\xe5\x88\x97\xe8\xa1\xa8'
print(response.decode('utf8'))
# def decode_char(*args):
#   response = args[0]
#   print(response.decode('utf8'))
#
# c = b'\a8\xe5\x90\xa7\xef\xbc\x81'
#
# decode_char(c)

补充知识:python3 中怎么把类似这样的'\xe5\xae\x9d\xe9\xb8\xa1\xe5\xb8\x82'转换成汉字输出

在编程的过程中遇到了类似的困扰,网上查了很多解决思路,终于算是明白了一些,这里和大家分享 一下。

python3相对于python2最重要的新特性之一就是对字符串(文本)和二进制数据流做了明确的区分,文本总是Unicode,由字符类型表示,而二进制数据则由bytes类型表示,python3不会以任意隐式方式混用字节型和字符型,也不能拼接字符串和字节流(python2中可以,会自动进行转换),也不能在字节流中搜索字符串,也不能将字符串传入参数为字节流的函数。

str和bytes类型之间的相互转换

字符串类str有一个encode()方法,它是字符串向比特流的编码过程。

bytes类则有一个decode()方法,它是比特流向字符串的解码过程

Python3之乱码\xe6\x97\xa0\xe6\xb3\x95处理方式

encode过程

s = '绝地求生'
ss = s.encode()
print(type(ss))
print(ss)

运行结果:

Python3之乱码\xe6\x97\xa0\xe6\xb3\x95处理方式

decode过程

s = b'\xe7\xbb\x9d\xe5\x9c\xb0\xe6\xb1\x82\xe7\x94\x9f'
ss = s.decode()
print(type(ss))
print(ss)

运行结果:

Python3之乱码\xe6\x97\xa0\xe6\xb3\x95处理方式

了解过基本的转化过程,下面回到主题,如何将'\xe7\xbb\x9d\xe5\x9c\xb0\xe6\xb1\x82\xe7\x94\x9f'转换成汉字输出呢?

要解决的问题是将bytes类型的内容以汉字的形式输出,但是该部分内容是字符串类型。因此首先需要将该str转换成bytes类型,再decode解码为str输出。这里需要用到的方法是encode(‘raw_unicode_escape')。当然,也可以使用decode(‘raw_unicode_escape')方法输出内容为bytes形式的字符串

s = '\xe7\xbb\x9d\xe5\x9c\xb0\xe6\xb1\x82\xe7\x94\x9f'
ss = s.encode('raw_unicode_escape')
print(type(ss))
print(ss)

sss = ss.decode()
print(sss)

结果:

Python3之乱码\xe6\x97\xa0\xe6\xb3\x95处理方式

方法补充:如果我们直接定义bytes类型的变量,也可以直接使用str(s, ‘utf8')的方式输出汉字

s = b'\xe7\xbb\x9d\xe5\x9c\xb0\xe6\xb1\x82\xe7\x94\x9f'

print(type(s))
print(s)

ss = str(s, 'utf8')
print(ss)

结果:

Python3之乱码\xe6\x97\xa0\xe6\xb3\x95处理方式

第二种方法可以输出从网络上直接抓取的网页中包含的中文字符。

我们使用如下代码,抓取网页www.baidu.com。

import urllib.request
response = urllib.request.urlopen('http://www.baidu.com')
html = response.read()
print(html)

显示的结果中,中文部分会以\xe7\x99\xbe\xe5\xba\xa6\xe4\xb8\x80代替,这里可以使用方法二进行转换。

import urllib.request
response = urllib.request.urlopen('http://www.baidu.com')
html =str(response.read(),'utf-8')
print(html)

结果如下:

Python3之乱码\xe6\x97\xa0\xe6\xb3\x95处理方式

以上这篇Python3之乱码\xe6\x97\xa0\xe6\xb3\x95处理方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python异步任务队列示例
Apr 01 Python
Python的内存泄漏及gc模块的使用分析
Jul 16 Python
python使用socket远程连接错误处理方法
Apr 29 Python
Python中字符串格式化str.format的详细介绍
Feb 17 Python
使用Python轻松完成垃圾分类(基于图像识别)
Jul 09 Python
简单了解python变量的作用域
Jul 30 Python
Python配置文件处理的方法教程
Aug 29 Python
python 求定积分和不定积分示例
Nov 20 Python
使用Python来做一个屏幕录制工具的操作代码
Jan 18 Python
python 两种方法修改文件的创建时间、修改时间、访问时间
Sep 26 Python
python 爬取京东指定商品评论并进行情感分析
May 27 Python
Python必备技巧之函数的使用详解
Apr 04 Python
Python urllib.request对象案例解析
May 11 #Python
python将dict中的unicode打印成中文实例
May 11 #Python
ansible-playbook实现自动部署KVM及安装python3的详细教程
May 11 #Python
Python转换字典成为对象,可以用"."方式访问对象属性实例
May 11 #Python
Python3自定义json逐层解析器代码
May 11 #Python
Python3自定义http/https请求拦截mitmproxy脚本实例
May 11 #Python
Python 找出出现次数超过数组长度一半的元素实例
May 11 #Python
You might like
推荐几部必看的DC动画电影
2020/03/03 欧美动漫
PHP动态柱状图实现方法
2015/03/30 PHP
Yii获取当前url和域名的方法
2015/06/08 PHP
PHP实现中文圆形印章特效
2015/06/19 PHP
PHP基于Redis消息队列实现发布微博的方法
2017/05/03 PHP
PHP实现将多个文件中的内容合并为新文件的方法示例
2017/06/10 PHP
tagName的使用,留一笔
2006/06/26 Javascript
js 对象是否存在判断
2009/07/15 Javascript
理解JavaScript中的对象 推荐
2011/01/09 Javascript
jquery让返回的内容显示在特定div里(代码少而精悍)
2014/06/23 Javascript
js实现分割上传大文件
2016/03/09 Javascript
JavaScript拖动层Div代码
2017/03/01 Javascript
深入理解Vue父子组件生命周期执行顺序及钩子函数
2018/08/12 Javascript
解决layer 关闭当前弹窗 关闭遮罩层 input值获取不到的问题
2019/09/25 Javascript
使用Node.js实现base64和png文件相互转换的方法
2020/03/11 Javascript
vue-cli 3如何使用vue-bootstrap-datetimepicker日期插件
2021/02/20 Vue.js
[05:41]2014DOTA2西雅图国际邀请赛 小组赛7月10日TOPPLAY
2014/07/10 DOTA
Python根据区号生成手机号码的方法
2015/07/08 Python
Python实现1-9数组形成的结果为100的所有运算式的示例
2017/11/03 Python
python使用Tesseract库识别验证
2018/03/21 Python
python 图片去噪的方法示例
2019/07/09 Python
200行python代码实现2048游戏
2019/07/17 Python
python科学计算之numpy——ufunc函数用法
2019/11/25 Python
Python timer定时器两种常用方法解析
2020/01/20 Python
PyQt5实现登录页面
2020/05/30 Python
用python给csv里的数据排序的具体代码
2020/07/17 Python
Mio Skincare美国官网:身体紧致及孕期身体护理
2017/03/05 全球购物
澳大利亚首屈一指的鞋类品牌:Tony Bianco
2018/03/13 全球购物
本科毕业论文答辩稿
2015/06/23 职场文书
青年岗位能手事迹材料(2016推荐版)
2016/03/01 职场文书
请学会珍惜眼前,因为人生没有下辈子!
2019/11/12 职场文书
Python 循环读取数据内存不足的解决方案
2021/05/25 Python
关于 Python json中load和loads区别
2021/11/07 Python
中国十大神话动漫电影排行榜 哪吒登顶 白蛇缘起排第七
2022/03/21 国漫
MySQL Server 层四个日志
2022/03/31 MySQL
vue组件冲突之引用另一个组件出现组件不显示的问题
2022/04/13 Vue.js