進行文字處理時經常遇到這個問題,順手記錄下來python2 中預設編碼為ascii,但3中則時unicode。
unicode分為utf-32(4byte),utf-16(2byte)(常用), utf-8(1~4byte),但檔案中村的還是utf-8以節省空間。
python3進行encode編碼的同時會主動把string變成bytes型別,而decode解碼則會把bytes型別變為string型別;進行unicode編碼時,乙個中文字元=2個位元組,乙個英文本元=乙個位元組,而ascii不能存中文字元。
utf-8作為unicode的優化,是可變長字元編碼,所有英文本元依然按照ascii進行儲存,但是中文字元統一為3個位元組。
py2unicode充當中介軟體,對gbk以及utf-8都需要首先decode為unicode然後再encode為其他編碼格式
py3預設unicode,對於字元直接encode就行,但是輸入的其他格式的文字依舊需要先解碼再編碼
#! /usr/bin/env python
# __auther__ == luoahong
#無需宣告字元編碼,當然你宣告也不會報錯
s ='你好'
# 字串s已經是unicode編碼,無需decode,直接encode
s_to_gbk = s.encode(
"gbk"
)print
("----s_to_gbk----"
)print
(s_to_gbk)
#這邊還是一樣,gbk需要先解碼成unicode,再編碼成utf-8
gbk_to_utf8 = s_to_gbk.decode(
"gbk"
).encode(
"utf-8"
)print
("-----gbk_to_utf8---"
)print
(gbk_to_utf8)
#解碼成unicode字元編碼
utf8_decode = gbk_to_utf8.decode(
"utf-8"
)print
("-------utf8_decode----"
)print
(utf8_decode)
#輸出---
-s_to_gbk---
-b'\xc4\xe3\xba\xc3'--
---gbk_to_utf8---
b'\xe4\xbd\xa0\xe5\xa5\xbd'--
----
-utf8_decode---
-你好
Python(1) 字串格式化
1。1 字串的格式化 顧名思義 就是讓字串按照自己想要的格式呈現 在python中內建了對字串進行格式化的操作的格式符 也可以看做是佔位符,為真實值預留位置和規定格式。如下面的例子 字串格式 a 3.456 print 7.3f a print 7.3f a 輸出結果 3.456 3.456這裡第乙...
python基礎 8 字元編碼
1 ascii ascii american standard code for information interchange,美國標準資訊交換 是基於拉丁字母的一套電腦編碼系統,主要用於顯示現代英語和其他西歐語言,其最多只能用 8 位來表示 乙個位元組 即 2 8 256 1,所以,ascii碼...
python 3字元編碼
在python2中預設是ascii編碼,python3是utf 8編碼 在python 的源 檔案中經常會看到 a 中文 type a str b bytes a,encoding utf 8 bb xe4 xb8 xad xe6 x96 x87 type b bytes 以上的 都在python ...