Python--由pycharm設置編碼而去深入了解一下編碼問題


下面是一張pycharm的編碼配置截圖:

 

 為什么要使用utf-8?GBK是什么?unicode又是什么?with no bom是什么?with bom又是什么?

先從為什么需要字符編碼來說起吧?

我們知道計算機只能處理數字:0和1 ,如果要處理文本那么就得把文本轉換成數字。最早期外國人為了讓計算機能夠理解他們的英文,就把一個字節從(最高位沒用到哦) 0~127 全部都給編碼了。最后弄出來了個對照表,來表示生活中會出現的字符,這個對照表就是大家熟知的ASCII對照表。表中的編碼稱為ASCII碼

一個ASCII碼對照表就秒天秒地了么?

由於中國文字博大精深,外國人哪能料想一個字節的ASCII表示不了中文了;於是中國有位牛人編制出了一套新的編碼表:占用了兩個字節、還和ASCII不沖突。然后就解決了中文在計算機中的顯示問題,后來慢慢就出來了一個叫GB2312的編碼,為廣大漢字使用者帶來福音。

能表示漢字就算完事兒了么?

世界上有幾百種語言 ,日本人、韓國人相繼推出了他們的編碼;編碼越來越多,各國語言混合在一起就會出現亂碼。所以一種號稱能夠統一萬國語言的編碼出現了,他就是后世廣為使用的Unicode碼:Unicode碼通常使用兩個字節表示一個字符,原有的英文編碼從單字節變成雙字節,只需要把高字節全部填為0就可以。

再完善一些:

日子久了,人們吐槽:一個英文字母根本就占不了兩個字節啊?本着節約不浪費的原則,國際組織又推出了一種叫UTF-8的編碼,也稱可變長度字符編碼。好了這下問題都解決了。根據具體情況將Unicode字符編成1-6個字節,時至今日 utf-8編碼被廣泛運用。

BOM:Byte Order Mark--定義字節順序:

數據在網絡傳輸中分兩種順序:大頭和小頭。UTF-8編碼不需要使用BOM來表明字節順序,一般我們設置文件編碼格式的時候,通常會遇到With No BOM 和 With BOM ,選UTF-8 With NO BOM或者UTF-8 Without BOM就行了。

最后:

Python誕生時間比Unicode編碼還要早,所以早期的PYTHON是使用ASCII編碼來表讀文件的。

1、我們寫Python或者其它項目都習慣地將編譯器調成UTF-8 編碼,這樣大家整整齊齊以防亂碼。

2、我們也會經常在.py文件的頭部看到這樣的聲明:

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

告訴python編譯器,去以utf-8編碼去加載所有字符。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM