編碼 encode/decode
# coding=UTF-8
text = '測試'
print len(text) # 顯示 6
第 1 行是 編碼宣告(Encoding declaration),這是個魔法註解(Magic comment),它告訴 Python 直譯器,這個原始碼檔案是以 UTF-8 來編碼,如果不這麼加上這個魔法註解,Python 2.x 會以 ASCII 編碼來解讀原始碼。
在 Python 3.x 中,預設原始碼檔案必須是 UTF-8 編碼,如果原始碼檔案想要是 UTF-8 以外的編碼,同樣必須在第 1 行放置編碼宣告。
簡單理解 UTF-8和Unicode
UTF-8由unicode衍伸而來。
| Unicode | UTF-8 | |
|---|---|---|
| 長度 | 中英皆2bytes | 可變動,中文3bytes,英文1byte |
# coding=UTF-8
text = '測試'
print len(text) # 顯示 6
# coding=UTF-8
text = u'測試' # 用unicode型態來儲存
print type(text) # 顯示 "<type 'unicode'>"
print len(text) # 顯示 2
Python 3.x 中,文字是 str 型態的實例
text = '測試'
print(type(text)) # 顯示 "<class 'str'>"
print(len(text)) # 顯示 2
text = '測試'
text.encode('UTF-8') # '測試'的utf-8
text.encode('UTF-8').decode('UTF-8') # 顯示 測試