python3 編碼問題詳解

  1. 計算機只能處理數(shù)字,如果需要處理文本信息,那么就需要設(shè)計一種編碼方法來使用數(shù)字表示文本。計算機在設(shè)計時采用8bit=1byte表示一個字節(jié)。那么1byte能表示的最大數(shù)字是255(2的8次方)。每一個數(shù)字就可以表示一個字符。于是神奇的ASCII編碼方案誕生了。
  2. 由于早期計算機是在美國誕生的,于是ASCII編碼只能表示英文字母,數(shù)字,符號。為了能夠表示本國文字,各國相繼有了自己的編碼方案。如中國的GB2312。隨著國際化程度的加深,多語言文本大量出現(xiàn)。但是因不同的語言有不同的編碼方案,多語言文本中會出現(xiàn)沖突,導致亂碼。于是又出現(xiàn)了一個神奇的編碼方案——Unicode。
  3. Unicode編碼方案將所有語言都統(tǒng)一到一套編碼里,這樣就方便了很多。Unicode通常使用兩個字節(jié)表示一個字符,若遇到生僻字符就會使用四個字節(jié)。兩個字節(jié)表示一個字符,同時常用字符在整個字符集中所占比例不是很大,多數(shù)字符都使用兩個字節(jié)表示會很費內(nèi)存的呀~ 于是,嘿嘿嘿(●ˇ?ˇ●) 又一個神奇的東西誕生了,可變長的UTF-8編碼。
  4. UTF-8編碼是一種針對Unicode的可變長度字符編碼,也是一種前綴碼。它可以用來表示Unicode標準中的任何字符,且其編碼中的第一個字節(jié)仍與ASCII兼容,這使得原來處理ASCII字符的軟件無須或只需做少部分修改,即可繼續(xù)使用。
  5. 有時候會看到這樣一個選項以UTF-8無BOM格式編碼那么這個神奇的BOM是什么呢它常被用來當作標示文件是以UTF-8、UTF-16UTF-32編碼的記號。python3的解釋器會解決帶不帶BOM的問題~就不要我們擔心了。在linux下最好還是使用無BOM的UTF-8編碼格式。
  6. 關(guān)于BOM的知乎討論可以看一下~BOM知乎討論
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

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

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