python3
中,所有的字串在記憶體中均是unicode
儲存。
t = 'abc'
上述語句在計算機記憶體的執行順序是這樣的:
雖然記憶體總是unicode
儲存,但是輸出到檔案中就是utf-8
或者gbk
等格式,根據檔案的編碼型別不同而不同。
字元轉十進位制unicode碼
>>> ord("中")
20013
十進位制unicode碼轉字元
>>> chr(20013)
'中'
注意內容:轉換方法:
str
轉換為bytes
>>> '中國'.encode('utf-8')
b'\xe4\xb8\xad\xe6\x96\x87'
>>> '中文'.encode('gbk')
b'\xd6\xd0\xce\xc4'
>>> '中文'.encode('ascii')
unicodeencodeerror traceback (most recent call last)
in ()
1 '中文'.encode('ascii')
unicodeencodeerror: 'ascii' codec can't encode characters in position 0-1: ordinal not in range(128)
第三條語句會報錯,因為ascii編碼無法解析中文
bytes
轉換為str
>>> b'\xe4\xb8\xad\xe6\x96\x87'.decode('utf-8')
'中文'
>>> b'\xd6\xd0\xce\xc4'.decode('gbk')
'中文'
demo_str = '巨集傑' # python3 預設的編碼為unicode
# unicode 轉換為 gb2312
unicode_gb2312 = demo_str.encode(』gb2312『) # 因為demo_str預設是unicode,所以不需要decode()成str。直接encode成要轉換的編碼gb2312。
print('gb2312:', unicode_gb2312)
b'\xba\xea\xbd\xdc'
# gb2312 轉換為 utf-8
gb2312_utf8 = unicode_gb2312.decode('gb2312').encode('utf-8') # 當前字元為gb2312所以要先decode成unicode(decode中傳入的引數為當前字元的編碼集)然後再encode成utf-8
print('utf-8: ', gb2312_utf8)
# utf8 轉換為 gbk
utf8_gbk = gbk2312_utf8.decode('utf-8').encode('gbk') # 當前字符集編碼為utf-8,要想轉換成gbk,要先decode成unicode字符集,再encode成gbk字符集。
print('gbk: ', utf8_gbk)
# utf8 轉換為 unicode
utf8_unicode = utf8_gbk.decode('gbk') # 注意當轉換為unicode時,並不需要encode()了。
print('unicode: ' utf8_unicode)
# unicode 轉換為 gb18030
unicode_gb18030 = utf8_unicode.encode('gb18030')
print('gb18030: ', unicode_gb18030)
總結各個編碼的相互轉化都要先轉換為unicode
然後通過unicode
再轉換為想要的編碼例如: utf-8、gb2312、gbk、gb18030 都是bytes字符集。中間橋梁為 unicode。
字串str
轉換為bytes
使用encode()
轉換為位元組碼
bytes
轉換為 字串str
使用decode()
轉換為unicode編碼
Python編碼問題
tag python,encoding,unicode 現有的字元編碼 ascii,gbk,gb2312,utf 8,unicode.unicode可以用來表示所有語言的字元,而且是定長雙位元組 也有四位元組的 編碼,包括英文本母在內。python中定義乙個unicode字串和定義乙個普通字串一樣簡...
python編碼問題
python裡面基本上要考慮三種編碼格式 1 原始檔編碼 在檔案頭部使用coding宣告。告訴python直譯器該 檔案所使用的字符集。usr bin python coding utf8 2 內部編碼 檔案中的字串,經過decode以後,被轉換為統一的unicode格式的內部資料,類似於u uni...
Python編碼問題
python裡面基本上要考慮三種編碼格式 1 原始檔編碼 在檔案頭部使用coding宣告。告訴python直譯器該 檔案所使用的字符集。usr bin python coding utf8 2 內部編碼 檔案中的字串,經過decode以後,被轉換為統一的unicode格式的內部資料,類似於u uni...