1. 程式人生 > >python3- 編碼格式

python3- 編碼格式

常見編碼:

ASCII:單位元組 GB2312:簡體中文編碼集 GBK:相容擴充套件了GB2312,能顯示繁體中文,能顯示日文中的片假名。 Unicode:國際組織制定的可以容納世界上所有文字和符號的字元編碼方案。每個字元佔用2個位元組。 UTF-8:是最流行的一種對 Unicode 進行傳播和儲存的編碼方式。可變長度,比如英文字元和數字佔1個位元組,漢字佔3個位元組。 現在普遍應用:本機儲存用Unicode,網路傳輸用utf-8

python直譯器中:

python2 預設編碼格式為 ascii python3 預設編碼格式為Unicode

(下面對於python編碼設計的方面和檢視系統編碼格式來自部落格:http://www.cnblogs.com/fnng/p/5008884.html)

在開發python程式過程中,會涉及到三個方面的編碼:

python程式的編碼 python程式執行環境的編碼 python程式讀取外部檔案、網頁的編碼

python程式的編碼:

首行加:# -*- coding: utf-8 -*-

python程式執行時環境(IDE)的編碼:

執行下面一段程式碼:

  1. #!/usr/bin/env python

  2. # -*- coding: utf-8 -*-

  3. #python3 程式碼,wing ware 5 編輯

  4. name = "你好"

  5. print(name)


在Windows cmd下執行時,出現下面問題:

  因為Windows cmd的編碼預設是 936(cmd框頂部右鍵——屬性——選項——當前內碼表),而python程式碼中編碼格式為utf-8。
在cmd中輸入:chcp 65001 回車執行(Windows cmd下,65001 表示utf-8),cmd頂部,右鍵——屬性——字型設定為 Lucida Console,再來執行python程式就正常了。
(把字型重新設定為點陣字型,cmd中輸入:chcp 936 回車執行,cmd回到原來設定了)

python程式讀取外部檔案、網頁的編碼:

暫時沒找到合適的例子

檢視python系統編碼:

(python2 方法一樣)

編碼格式的轉變:decode()與encode()

encode():把Unicode編碼格式的字串轉換為其他編碼格式的字串 decode(): 將其他編碼的字串換成Unicode編碼的字串

程式碼:

  1. #!/usr/bin/env python

  2. # -*- coding: utf-8 -*-

  3. #python3 程式碼,wing ware 5 編輯

  4. #ord("單個字元") 檢視字元對應的編碼

  5. print("字元a的編碼為:",ord("a"))

  6. #chr(整數n) 檢視整數n 對應的字元

  7. print("編碼97對應的字元為:",chr(97))

  8. #檢視單個漢字對應的編碼

  9. print("漢字你對應的編碼為:",ord("你"))

  10. #檢視編碼對應的漢字

  11. print("編碼20320對應的字為:",chr(20320))

  12. #python3預設的編碼格式是Unicode

  13. #encode("編碼格式a") 把Unicode編碼格式轉換為 編碼格式a

  14. #decode("編碼格式a") 把編碼格式為 編碼格式a  的字串 轉換為編碼格式為Unicode的字串

  15. str1 = "你好啊"

  16. # encode("utf-8") 把Unicode編碼格式轉為utf-8編碼格式

  17. print("{_str1} 轉換為utf-8編碼格式後為:".format(_str1=str1),str1.encode("utf-8"))

  18. str2 = "hello"

  19. print("{_str2} 轉換為utf-8編碼格式後為:".format(_str2=str2),str2.encode("utf-8"))

  20. str3 = "hello你好啊"

  21. print("{_str3} 轉換為utf-8編碼格式後為:".format(_str3=str3),str3.encode("utf-8"))

  22. # encode("utf-8") 把utf-8格式轉為Unicode

  23. str4 = str3.encode("utf-8")

  24. print("str4為:",str4)

  25. print("編碼格式為utf-8的str4,轉換為編碼格式Unicode後為:",str4.decode("utf-8"))

  26. # 網路資料傳輸時會用到這兩種轉換

執行結果:

[python] < class="ViewSource" style="box-sizing: border-box;outline: 0px;color: rgb(103, 149, 181);cursor: pointer;background-image: url("https://mmbiz.qpic.cn/mmbiz_png/0Sl9RuzzEs7u6PiaKiclwouPU1tpH56x2bNIOnUNh3WmicKgv1cux1ycn87ONJicKgj9sFBRR3slMq9YvwDolbxqvA/640?wx_fmt=gif");background-position: left top;background-size: initial;background-repeat: no-repeat;background-attachment: initial;background-origin: initial;background-clip: initial;background-color: inherit;border-width: initial;border-style: none;border-color: initial;padding: 1px;margin-right: 10px;word-break: break-all;font-size: 9px;display: inline-block;width: 16px;height: 16px;text-indent: -2000px;" title="view plain">view plain < class="CopyToClipboard" style="box-sizing: border-box;outline: 0px;color: rgb(103, 149, 181);cursor: pointer;background-image: url("https://mmbiz.qpic.cn/mmbiz_png/0Sl9RuzzEs7u6PiaKiclwouPU1tpH56x2bXemZMnKaX6Lz1wiaNnMv0uoicLL69oIwy8STpaT3oXpJJLzJ6ia4ghH2A/640?wx_fmt=gif");background-position: left top;background-size: initial;background-repeat: no-repeat;background-attachment: initial;background-origin: initial;background-clip: initial;background-color: inherit;border-width: initial;border-style: none;border-color: initial;padding: 1px;margin-right: 10px;word-break: break-all;font-size: 9px;display: inline-block;width: 16px;height: 16px;text-indent: -2000px;" title="copy">copy

  1. 字元a的編碼為: 97

  2. 編碼97對應的字元為: a

  3. 漢字你對應的編碼為: 20320

  4. 編碼20320對應的字為: 你

  5. 你好啊 轉換為utf-8編碼格式後為: b'\xe4\xbd\xa0\xe5\xa5\xbd\xe5\x95\x8a'

  6. hello 轉換為utf-8編碼格式後為: b'hello'

  7. hello你好啊 轉換為utf-8編碼格式後為: b'hello\xe4\xbd\xa0\xe5\xa5\xbd\xe5\x95\x8a'

  8. str4為: b'hello\xe4\xbd\xa0\xe5\xa5\xbd\xe5\x95\x8a'

  9. 編碼格式為utf-8的str4,轉換為編碼格式Unicode後為: hello你好啊

更多學員筆記請加歪歪老師QQ2675336290

課程諮詢請加妞妞老師QQ2474123456