編碼是為了兼容字符集之間的通用性,通常可以編碼的地方有:
1、系統默認編碼
2、程序運行環境的編碼
3、源碼文件自身的編碼
4、程序中的字符串編碼
對於python也是一樣的:
通常中文操作系統的編碼都是gbk
python運行環境默認的編碼是ascII
源文件的編碼可以自己確定【# -*- coding: gbk -*-】,不設置就是默認的python編碼
程序內容的編碼可以通過python提供的幾個函數來進行轉換。【如unicode】
通常python編解碼的過程是這樣的:
接受到一個字符--如果預先沒有編碼則使用unicode編碼--》如果和系統的字符集不一致-->則隱性轉換為系統默認的字符集--》使用系統的編碼方式解碼字符串
python中程序內部編解碼的方式:
指定的編碼字符只能用指定的編碼方式解碼,否則會報錯。所有字符集中python的中間字符集是unicode。即如果gbk想轉換為utf-8的路徑不是直接轉換,而是gbk->unicode->utf-8.不能直接gbk->utf-8
另外對於一些包含特殊字符的編碼,直接解碼可能會報錯,可以使用對於的參數來設置。如
s.decode('utf-8',ignore)忽略其中有異常的編碼,僅顯示有效的編碼
s.decode('utf-8',replace)替換其中異常的編碼為?,這個相對來可能一眼就知道那些字符編碼出問題了。