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)的編碼:
執行下面一段程式碼:
-
#!/usr/bin/env python
-
# -*- coding: utf-8 -*-
-
#python3 程式碼,wing ware 5 編輯
-
name = "你好"
-
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編碼的字串
程式碼:
-
#!/usr/bin/env python
-
# -*- coding: utf-8 -*-
-
#python3 程式碼,wing ware 5 編輯
-
#ord("單個字元") 檢視字元對應的編碼
-
print("字元a的編碼為:",ord("a"))
-
#chr(整數n) 檢視整數n 對應的字元
-
print("編碼97對應的字元為:",chr(97))
-
#檢視單個漢字對應的編碼
-
print("漢字你對應的編碼為:",ord("你"))
-
#檢視編碼對應的漢字
-
print("編碼20320對應的字為:",chr(20320))
-
#python3預設的編碼格式是Unicode
-
#encode("編碼格式a") 把Unicode編碼格式轉換為 編碼格式a
-
#decode("編碼格式a") 把編碼格式為 編碼格式a 的字串 轉換為編碼格式為Unicode的字串
-
str1 = "你好啊"
-
# encode("utf-8") 把Unicode編碼格式轉為utf-8編碼格式
-
print("{_str1} 轉換為utf-8編碼格式後為:".format(_str1=str1),str1.encode("utf-8"))
-
str2 = "hello"
-
print("{_str2} 轉換為utf-8編碼格式後為:".format(_str2=str2),str2.encode("utf-8"))
-
str3 = "hello你好啊"
-
print("{_str3} 轉換為utf-8編碼格式後為:".format(_str3=str3),str3.encode("utf-8"))
-
# encode("utf-8") 把utf-8格式轉為Unicode
-
str4 = str3.encode("utf-8")
-
print("str4為:",str4)
-
print("編碼格式為utf-8的str4,轉換為編碼格式Unicode後為:",str4.decode("utf-8"))
-
# 網路資料傳輸時會用到這兩種轉換
執行結果:
[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
-
字元a的編碼為: 97
-
編碼97對應的字元為: a
-
漢字你對應的編碼為: 20320
-
編碼20320對應的字為: 你
-
你好啊 轉換為utf-8編碼格式後為: b'\xe4\xbd\xa0\xe5\xa5\xbd\xe5\x95\x8a'
-
hello 轉換為utf-8編碼格式後為: b'hello'
-
hello你好啊 轉換為utf-8編碼格式後為: b'hello\xe4\xbd\xa0\xe5\xa5\xbd\xe5\x95\x8a'
-
str4為: b'hello\xe4\xbd\xa0\xe5\xa5\xbd\xe5\x95\x8a'
-
編碼格式為utf-8的str4,轉換為編碼格式Unicode後為: hello你好啊
更多學員筆記請加歪歪老師QQ2675336290
課程諮詢請加妞妞老師QQ2474123456