python写byte数组到文件_这可能是写过最详细的Python文件操作。网友:收藏备用(中篇)...
很多同學(xué)對(duì)于編碼問(wèn)題都不是很清楚,計(jì)算機(jī)常見(jiàn)的編碼格式為:
ASCII
ISO-8859-1
GB2312
GBK
UTF-8
UTF-16
對(duì)于Python開(kāi)發(fā)中,我們一般都是采用統(tǒng)一的編碼格式:UTF-8
第一行加入環(huán)境申明:
#coding=utf-8
編碼操作方式一般都分為:編碼(encode)和解碼(decode) 但是對(duì)于今天我們所要講解的主角Python來(lái)說(shuō):
unicode和str兩種類型的相互轉(zhuǎn)換則為解碼和編碼。如下列子:
# coding = utf-8
# Python編碼問(wèn)題
str = "您好"
print("輸出字符類型--->>>", type(str))
print(str)
# 采用 encode編碼
str1 = str.encode('gbk')
print("gbk--encode--輸出字符類型---->>>>", type(str1))
print(str1)
str2 = str1.decode('gbk')
print("-gbk----decode解碼--->>>", str2)
str3 = str.encode('utf-8')
print("utf-8---->>encode----->>>", str3)
str4 = str3.decode('utf-8')
print("utf-8---decode---->>>",str4)從列子中可以看出,不同的編碼格式的輸出的字符是不一樣的字符表達(dá),我們?cè)谑褂镁幋a和解碼的時(shí)候都需要采用同一種編碼格式進(jìn)行兩者操作,否則就報(bào)錯(cuò)。
pritn中文編碼問(wèn)題
如下圖:
Python打印變量時(shí),操作系統(tǒng)會(huì)對(duì)變量進(jìn)行相應(yīng)的處理,若變量是str類型,則操作系統(tǒng)直接發(fā)送到終端顯示,若變量是unicode類型,則操作系統(tǒng)會(huì)對(duì)變量用sys.stdout.encoding編碼對(duì)變量encode,若變量中含有sys.stdout.encoding未定義字符,則會(huì)出現(xiàn)UnicodeEncodeError。編碼后字節(jié)序列被發(fā)送給終端,假若終端設(shè)置的編碼和str編碼不一致,終端就會(huì)顯示出亂碼。
兩種錯(cuò)誤情況:
1:UnicodeEncodeError
若變量中含有sys.stdout.encoding未定義字符則會(huì)出現(xiàn)如上錯(cuò)誤。一般避此個(gè)錯(cuò)誤的方式就是:
print("本地終端環(huán)境的默認(rèn)編碼---->>>",sys.getdefaultencoding())首先打印出本地環(huán)境的編碼格式,然后在字符串編碼的時(shí)候就現(xiàn)在對(duì)應(yīng)的編碼格式進(jìn)行編碼和解碼。
a = '你好呀'
b = u'Python'
print("--->>>",a)
print('采用utf-8--->>',b.encode('utf-8'))接下來(lái)我們來(lái)從實(shí)例中看看,編碼和解碼的用法。
# 讀取txt 設(shè)置編碼格式 一定要加上encoding 也就是文件的打開(kāi)的編碼格式 ,不加encoding則報(bào)錯(cuò)。
f = open("D:imgstest.txt",encoding='utf-8')
s = f.read()
f.close()
print("--->>>",type(s))
print("---->>>", s)總結(jié),Python3中編碼問(wèn)題比Python2有了很多改善。
P3中的編碼我們只需要記住一點(diǎn),打開(kāi)讀取文件的時(shí)候一定要聲明編碼格式,開(kāi)發(fā)編程前都提前設(shè)置好環(huán)境編碼,一般都是默認(rèn)的utf-8格式,解碼和編碼都使用統(tǒng)一的編碼格式進(jìn)行操作,這樣就能保存文件操作的時(shí)候不會(huì)出現(xiàn)編碼。
更多精彩請(qǐng)持續(xù)關(guān)注作者,點(diǎn)擊保存以下圖片,獲取更多資源和干貨。
http://weixin.qq.com/r/Dio1LZrEncfird5O938c (二維碼自動(dòng)識(shí)別)
總結(jié)
以上是生活随笔為你收集整理的python写byte数组到文件_这可能是写过最详细的Python文件操作。网友:收藏备用(中篇)...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: python3 多线程_图解|为什么 P
- 下一篇: 有java基础的人学python_准备自