Python - Encode()、Decode()、Encoding()

encode:编码

decode:解码

str字符串默认编码为:Unicode



>>> 左侧为编码后的Bytes码,解码为Unicode字符,再被编码为指定的其他格式编码

(注:↑本图片来源"百度图片")


【encoding()】

 使用Python打开文件时,文件数据按照文件本身的编码方式转换为字节码,如果这时需要将编码转换,那么我们可以使用encoding()参数来指定转换为的编码格式,如果文件不存在则该参数指定新建文件的编码格式

被读取的字节码依据Unicode规则被编码为Unicode字符(作为多语言编码合理转换的中介),随后按照转换规则转换为另一种编码(新的字节码);

a = "abcdefg"    #字符串默认为Unicode字符
b = a.encode("UTF-8")    # b"abcdefg" b表示bytes字节码

GB2312字符集(俗称):

【Unicode解释】

Unicode支持超过一百万种字符。每个字符分配一个编号,称为编码点,不同国家的字符占用指定区域内的一个编码点;

Unicode建立了一个框架并为该框架中的每个区域按照指定规则设计:

不同的区域中存放着不同国家的语言编码,

指定的规则使得各个不同国家的语言能够进行编码的转换,这种规则使得可以将不同的编码再转换为对应的字节码(0/1表示)

例如:

GB2312/UTF-8等编码分别占用了Unicode编码中的指定区域,及一定范围的字节码表示该语言的编码,
该编码在需要被显示时会按照Unicode指定的规则翻译为对应的字节码,随后被集成电路解析在浏览器等显示设备上进行显示
在需要被执行操作时仍然需要Unicode的规则转化为字节码,然后CPU等部件再在对0/1组成的字节码进行运算等操作。



【Spider】

使用requests库发送请求的时候

html = requests.get(url).content.decode("utf-8")   

#这里的.content就是读取源文件字节流,随后将该字节流编码为Unicode编码,方便再进行更加精确的解码

html = requests.get(url).text.encode("utf-8")   

#text直接读取源文件字节流,后方指定对该字节流的编码方案,这里有时候就会遇到问题,当我们的文件编码是GB2312时,我们encode()使用了UTF-8那就会照成对字节流的编码错误,此时可以通过某些方法查看当前文件的编码再进行指定编码;也可以使用.content将其转换为Unicode编码再对其进行解码,后者较常用。

在使用requests库的时候,需要对get()返回的Response类型进行再次操作:

使用.text是自动根据文本猜测并进行编码,得到的是字符串(对字符串进行编码使用.encode()函数

使用.content可将Response对象转换为字节码(对字节码进行编码使用.decode()函数


在进行文件保存的时候

with open(fileName,"wb") as f:
       f.write(response.content)
 

with open("pythonTest.txt","r",encoding="utf-8") as f:        #编码的参数放在最后,实际上是对文本中字符串进行的编码
       text = f.read()

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值