亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

python下文件編碼問題

標簽:
Python

编码问题主要来源是python2.x和python3.x对字符串的语义发生重大变化
图片描述
在python2当中str看上去是字符串,实际上是连续的字节,因为早期的计算机是美国人发明的,,最开始设计的字符编码也只考虑到英文字符,采用ASCII码对字符进行编码,也就是一个字节表示一个字符,一片连续的字节等价于一个字符串。
但是由于一个字节表示一个字符,已经不能满足各国的需求,进而人们发明了各种编码格式:utf8,gbk。。
在python当中,有一种比较通用的就是unicode。
然而要把字符存储到文件当中,这种unicode编码是不能直接存储的,必须以某种编码格式变成连续的字节的格式,才能存储到文件里。
下面我就演示一下unicode到str的转化

图片描述
最后得到了一个str,只有str才能存储到物理设备当中,例如磁盘扇区和网络socket.
对unicode编码和解码必须同一种编码格式,否则就是乱码。
图片描述
对于文件的读写,写入之前指定某种格式的编码,变成str才能成功的写入
图片描述
此时的t其实还是utf8编码格式,要想转化成文本,就要解码,以相同的方式解码。
图片描述
u'\u4f60\u597d' = 你好

上面写的都是在python2当中,下面看看python3

b'asdfg'  #python3.x
'asdfg'  #python2.x
u'你好' #python2.x
'你好'  #python3.x

除此之外,open函数也发生变化。
它增加t的文本模式,也是默认参数。以及encoding参数,指定编码格式,这样我们在写入的时候,它自动将unicode转化成encoding指定的编码格式
读取时候也是一样的。

f = open('demo2.txt','wt',encoding='utf8')
f.write('你好')
f.close()
f = open('demo2.txt','rt',encoding='utf8')
s =f.read()
print(s)  # ==>你好

over!!

點擊查看更多內容
7人點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優質文章

正在加載中
感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消