文件操作with open() as 時報錯 UnicodeDecodeError: 'gbk' codec can't decode byte 0xa0 in position 22:
illegal multibyte sequence
解決辦法一:在后面加上文件編碼格式encoding = ‘utf-8’
FILE_OBJECT= open('order.log','r', encoding='UTF-8')
解決辦法二:
FILE_OBJECT= open('order.log','rb')
utf-8和gbk編碼
GBK: 專門用來解決中文編碼,雙字節。是在國家標准GB2312基礎上擴容后兼容GB2312標准。包含全部中文字符。
UTF-8: 解決國際上制度的一種多字節編碼,對英文使用8位(1個字節),中文使用24位(3個字節)來編碼。
對於英文字符較多的論壇適用於UTF-8節省空間。包含全世界所有國家需要用到的字符。
GBK和UTF-8文字編碼的特點:
GBK的文字編碼是雙字節來表示的,即不論中、英文字符均使用雙字節來表示,只不過為區分中文,將其最高位都定成1。
至於UTF-8編碼則是用以解決國際上字符的一種多字節編碼,它對英文使用8位(即一個字節),中文使用24位(三個字節)來編碼。對於英文字符較多的論壇則用UTF-8節省空間。
GBK和UTF-8文字編碼的區別:
GBK包含全部中文字符;
UTF-8則包含全世界所有國家需要用到的字符。
GBK是在國家標准GB2312基礎上擴容后兼容GB2312的標准;(好像還不是國家標准)
UTF-8編碼的文字可以在各國各種支持UTF8字符集的瀏覽器上顯示。
比如,如果是UTF8編碼,則在外國人的英文IE上也能顯示中文,而無需他們下載IE的中文語言支持包。
所以,對於英文比較多的論壇 ,使用GBK則每個字符占用2個字節,而使用UTF-8英文卻只占一個字節。
注意:
UTF-8版本雖然具有良好的國際兼容性,但中文需要比GBK/BIG5版本多占用50%的數據庫存儲空間,因此並非推薦使用,僅供對國際兼容性有特殊要求的用戶使用。
