關(guān)于python文件的字符編碼

# -*- coding: utf-8 -*-字符編碼是啥?

在弄清楚字符編碼是啥之前我們要先考慮一個問題。如果計算機(jī)最基礎(chǔ)的就是0和1,那么他們是如何識別我們輸入的英文字母和數(shù)字的。

下面是數(shù)學(xué)知識,我們現(xiàn)代人常用的計數(shù)方式是十進(jìn)制,就是從1數(shù)到9如果再數(shù)一個數(shù)前面就進(jìn)以為成為10.計算機(jī)最基礎(chǔ)的就是二進(jìn)制,0和1數(shù)到1再網(wǎng)上書就進(jìn)一位。二進(jìn)制和十進(jìn)制是可以互相轉(zhuǎn)換的。比如二進(jìn)制10就是十進(jìn)制數(shù)字2.計算機(jī)通過二進(jìn)制可以給十進(jìn)制進(jìn)行編碼。除此之外二進(jìn)制還可以轉(zhuǎn)換成八進(jìn)制和十六進(jìn)制。通過這些數(shù)學(xué)轉(zhuǎn)換,我們可以創(chuàng)建一個集合??梢岳斫獬煽梢酝ㄟ^二級制,八進(jìn)制,十進(jìn)制,十六進(jìn)制的數(shù)學(xué)關(guān)系創(chuàng)建一張對應(yīng)表。

就像下圖一樣。dec是十進(jìn)制,HX是十六進(jìn)制 Oct是八進(jìn)制。每一個數(shù)字都可以對應(yīng)一個字符,比如字母和數(shù)字。這樣我們就可以向計算機(jī)輸入英文了。

通過上面的表讓我們認(rèn)識到,變成本質(zhì)上就是英文和數(shù)學(xué)的結(jié)合產(chǎn)物。

當(dāng)我們弄清楚計算機(jī)數(shù)學(xué)和英語的關(guān)系之后,我們再來說字符編碼,說白了字符編碼就是類似上面的表,上面的表示ascii表,為了更好的表示字符,還有很多比較強(qiáng)大的表。我們在使用記事本,word等文本編輯程序的時候,就會使用到這些字符表。

有一種字符編碼叫做GBK,這個是中文字符集,這個字符集和ascii的表感覺差不多,但是由于漢子比較復(fù)雜,所以有些漢子內(nèi)容需要通過一個公式來計算。

[(GBKH-0x81)*0xBE+(GBKL-0x41)]*(漢字離散后每個漢字點陣所占用的字節(jié))

好吧我也不知道這個公式表達(dá)的是什么。

一般GBK只在中文軟件程序中使用,如果在英文軟件程序環(huán)境下,程序不能解析GBK那么程序就會出現(xiàn)亂碼。

為了保證所有的程序環(huán)境都可以正常顯示文字,就出現(xiàn)了UTF-8。這個字符編碼可以很好的兼容中文英文,python默認(rèn)就會讀取UTF-8字符編碼的文件。

那我們?nèi)绾卧O(shè)置字符編碼?

如果你和我一樣的文本編輯器可以在菜單中找到這個選項,然后你發(fā)現(xiàn)有很多字符編碼可以選擇。

除此之外,我們還可以使用下面這行代碼來讓python使用utf-8的模式來讀取這個文件。

# -*- coding: utf-8 -*-

就是告訴python我的文件要用utf-8字符集來解析。

在未來的變成當(dāng)中,html,java都會遇到很多字符編碼的問題,一般文字出現(xiàn)亂碼都是字符編碼的問題。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容