关于\x开头的字符串编码转换中文解决方法

您所在的位置:网站首页 cl和pl的发音音标以及发音视频教程 关于\x开头的字符串编码转换中文解决方法

关于\x开头的字符串编码转换中文解决方法

2024-07-17 13:50:45| 来源: 网络整理| 查看: 265

做爬虫可能经常遇到爬取到的数据存在编码问题,简直让人头疼,比如爬取到的是这样的:

例如: \xe4\xbd\xa0\xe5\xa5\xbd\xe4\xb8\x96\xe7\x95\x8c 中文是: 你好世界

上面这个是utf-8编码,但数据类型是字符串类型,而不是bytes类型的utf-8编码。

这样会导致一个结果:如果直接输出,显示的是乱码,也不能使用decode进行utf-8解码得到中文。

在python2中,中文指定utf-8格式,字符串存入内存就是utf-8编码格式,直接输出就是中文,就不存在这个问题;

而python3中,字符串存入内存是以unicode编码格式存入的,输出的是默认的utf-8编码格式,所以得到的是乱码。

可能有人会说,既然得到的是utf-8编码,在前面加上 " b " ,字符串就是bytes类型了,再利用decode进行解码不就可以得到中文吗?但显然,这是行不通的,你不可能去手动一个个添加,那有没有其他方法呢?

答案肯定是有的,既然知道这个字符串是utf-8编码的,那么我换种方式,只要将字符串中的 " \x " 改为 " % " 利用urllib中的unquote方法解码就可以得到中文了,因为url中的中文utf-8编码和这里的区别就是url中编码是%开头。

那么其实只要对utf-8字符串反向转换就行,先将字符串编码指定为unicode_escape

s = '\xe4\xbd\xa0\xe5\xa5\xbd\xe4\xb8\x96\xe7\x95\x8c' s = s.encode('unicode_escape')

得到bytes类型数据(单斜杠变成双斜杠)

b'\\xe4\\xbd\\xa0\\xe5\\xa5\\xbd\\xe4\\xb8\\x96\\xe7\\x95\\x8c'

接着再对bytes类型进行utf-8解码,得到字符串,将字符串中的 " \x " 替换为 " % "

ss = s.decode('utf-8').replace('\\x', '%')

替换作用就是将字符串改为url的utf-8编码格式

%e4%bd%a0%e5%a5%bd%e4%b8%96%e7%95%8c

最后利用urllib中的unquote方法将url编码解码,得到中文

un = parse.unquote(ss)

图1



【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


    图片新闻

    实验室药品柜的特性有哪些
    实验室药品柜是实验室家具的重要组成部分之一,主要
    小学科学实验中有哪些教学
    计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
    实验室各种仪器原理动图讲
    1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
    高中化学常见仪器及实验装
    1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
    微生物操作主要设备和器具
    今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
    浅谈通风柜使用基本常识
     众所周知,通风柜功能中最主要的就是排气功能。在

    专题文章

      CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭