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中的from..import绝对导入语句
Jun 21 Python
TensorFlow安装及jupyter notebook配置方法
Sep 08 Python
全面分析Python的优点和缺点
Feb 07 Python
使用Python爬取最好大学网大学排名
Feb 24 Python
python 实现A*算法的示例代码
Aug 13 Python
Python日志模块logging基本用法分析
Aug 23 Python
python模块之subprocess模块级方法的使用
Mar 26 Python
简单了解python关系(比较)运算符
Jul 08 Python
Python实现隐马尔可夫模型的前向后向算法的示例代码
Dec 31 Python
Python办公自动化之Excel(中)
May 24 Python
Python Pygame实战在打砖块游戏的实现
Mar 17 Python
Pandas 数据编码的十种方法
Apr 20 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
也谈 PHP 和 MYSQL
2006/10/09 PHP
将FCKeditor导入PHP+SMARTY的实现方法
2015/01/15 PHP
php实现将数组转换为XML的方法
2015/03/09 PHP
PHP的Socket通信之UDP通信实例
2015/07/02 PHP
PHP实现简单爬虫的方法
2015/07/29 PHP
PHP常用的排序和查找算法
2015/08/06 PHP
微信小程序 消息推送php服务器验证实例详解
2017/03/30 PHP
用php+ajax新建流程(请假、进货、出货等)
2017/06/11 PHP
php workerman定时任务的实现代码
2018/12/23 PHP
PHP如何使用JWT做Api接口身份认证的实现
2020/02/03 PHP
checkbox 多选框 联动实现代码
2008/10/22 Javascript
FileUpload上传图片(图片不变形)
2010/08/05 Javascript
javascript parseInt() 函数的进制转换注意细节
2013/01/08 Javascript
javascript获取dom的下一个节点方法
2014/09/05 Javascript
js实现有时间限制消失的图片方法
2015/02/27 Javascript
JQuery中层次选择器用法实例详解
2015/05/18 Javascript
JavaScript判断FileUpload控件上传文件类型
2015/09/28 Javascript
基于JS实现的随机数字抽签实例
2016/12/08 Javascript
JavaScript 数据类型详解
2017/03/13 Javascript
详解Vue-基本标签和自定义控件
2017/03/24 Javascript
Windows下Node.js安装及环境配置方法
2017/09/18 Javascript
Vue cli构建及项目打包以及出现的问题解决
2018/08/27 Javascript
ES6函数和数组用法实例分析
2020/05/23 Javascript
vue tab切换,解决echartst图表宽度只有100px的问题
2020/07/19 Javascript
[01:11:46]DOTA2-DPC中国联赛 正赛 iG vs Magma BO3 第一场 2月23日
2021/03/11 DOTA
Python多线程编程(八):使用Event实现线程间通信
2015/04/05 Python
python中的内置函数max()和min()及mas()函数的高级用法
2018/03/29 Python
使用Python计算玩彩票赢钱概率
2019/06/26 Python
python Jupyter运行时间实例过程解析
2019/12/13 Python
用python制作个视频下载器
2021/02/01 Python
塔吉特百货公司官网:Target
2017/04/27 全球购物
介绍一下结构化程序设计方法和面向对象程序设计方法的区别
2012/06/27 面试题
语文教育专业求职信
2014/06/28 职场文书
职工年度考核评语
2014/12/31 职场文书
党员干部廉洁自律承诺书
2015/04/28 职场文书
ORACLE查看当前账号的相关信息
2021/06/18 Oracle