以前使用Python2,一直為中文煩惱,也不知道為什么開頭就要聲明#coding=utf-8,后來用了Python3,發現就不用這樣了,還是想徹底弄懂下這是為什么。
先講asc碼 每個 ASC碼占一個字節 1個字節=8個bit 也就是說ASC碼最多只有256個 表示中文肯定是不夠的 ,所以后面就有了中文編碼 gb2312,一個gb2312占用兩個字節 ,但是中文有了 日文韓文等也都有自己的編碼,這個就很亂,后來就有了統一編碼Unicode ,Unicode占用兩個字節 ,但是代碼一般都是英文的,占了兩個字節多占用了一倍的存儲,不利於傳輸和存儲,於是就有了utf-8的格式 可變長編碼,utf-8英文占用1個字節,漢字占用三個字節。
我們用Python2的時候,漢字在Windows下默認是用的GB2312編碼的,一般會申明都會帶上一個小寫的u,表示使用的是Unicode編碼;所以Python經常會使用decode函數和encode函數,decode函數作用是將其他編碼轉換成Unicode,encode函數的作用是將Unicode轉換成其他編碼;如 s=“我愛Python”是gb2312編碼,把它轉換成utf-8編碼就得使用 s.decode("GB2312").encode("utf-8")。如果在Python3中,它默認就是Unicode編碼,就可以直接encode成utf-8格式了。