python中的unicode編碼

2021-05-28 06:38:53 字數 2102 閱讀 3790

概括、從python1.6開始就可以處理unicode字元了。

一、幾種常見的編碼格式。

1.1、ascii,用1個位元組表示。

1.2、utf-8,用1個至三個位元組表示,表示ascii碼時只占用1個位元組,ascii編碼是utf-8的子集。

1.3、utf-16,用2個位元組表示,在python中,unicode的含義就是utf-16。

二、python原始檔的編碼與解碼,我們寫的python程式從產生到執行的過程如下:

編輯器---->源**---->直譯器---->輸出結果

2.1、編輯器決定源**的編碼格式(在編輯器中設定)

2.2、也必須要直譯器知道源**的編碼格式(很遺憾很難從編碼的資料獲知原始檔的編碼格式)

2.3、補充:在windows下當用ultraedit把源**存成utf-8時,會在檔案中記錄bom標誌(不必祥究)這樣activepython直譯器會自動識別原始檔是utf-8格式,但是如果用

eclipse

編輯原始檔,雖然在編輯器中指定檔案編碼為utf-8,但是因為沒有記入bom標誌,所以必須在原始檔開始處加上

#coding=utf-8,

用注釋來提示直譯器原始檔的編碼方式挺有意思。

2.4、舉例:例如我們要向終端輸出"我是中國人"。

#coding=utf-8     告訴python直譯器用的是utf-8編碼,我用的是eclipse+pydev

print "我是中國人" #原始檔本身也要存成utf-8編碼

2.5、當然我們可以用其他unicode編碼,例如gb2312,shift_jis等等,但是建議用utf-8,表示的字元更多,例如能同時顯示中文和日文字元。

三、編碼的轉換,兩種編碼的轉換要用utf-16作為中轉站。

舉例:如果有乙個文字檔案jap.txt,裡面有內容 "私は中國人です。",編碼格式是日文編碼shift_jis,

還有乙個文字檔案chn.txt,內容是"中華人民共和國",編碼格式是中文編碼gb2312。

我們如何把兩個檔案裡的內容合併到一起並儲存到utf.txt中並且不顯示亂碼呢,可以採用把兩個檔案的內容都轉成utf-8格式,因為utf-8裡包含了中文編碼和日文編碼。

#coding=utf-8

try:

jap=open("e:/jap.txt","r")

chn=open("e:/chn.txt","r")

utf=open("e:/utf.txt","w")

jap_text=jap.readline()

chn_text=chn.readline()

#先decode成utf-16,再encode成utf-8

jap_text_utf8=jap_text.decode("shift_jis").encode("utf-8") #不轉成utf-8也可以

chn_text_utf8=chn_text.decode("gb2312").encode("utf-8")#編碼方式大小寫都行utf-8也一樣

utf.write(jap_text_utf8)

utf.write(chn_text_utf8)

except ioerror,e:

print "open file error",e

四、tk庫支援ascii,utf-16,utf-8

#coding=utf-8

from tkinter import *

try:

jap=open("e:/jap.txt","r")

str1=jap.readline()

except ioerror,e:

print "open file error",e

root=tk()

label1=label(root,text=str1.decode("shift_jis")) #如果沒有decode則顯示亂碼

label1.grid()

root.mainloop()

五、字串相關

1、預設情況下字串的編碼格式和原始碼的編碼格式一致。

2、如果在字串前面加上u,則字串會採用unicode編碼。

python中編碼unicode和utf 8

在python中的字串記憶體中是用unicode進行編碼 python2 s 我愛你python su u 我愛你python s.encode utf 8 traceback most recent call last file line 1,in unicodedecodeerror ascii...

python2 7響應資料中unicode轉中文

print 響應結果 s r.content.decode unicode escape 一 在爬蟲抓取網頁資訊時常需要將類似 u4eba u751f u82e6 u77ed uff0cpy u662f u5cb8 轉換為中文,實際上這是unicode的中文編碼。可用以下方法轉換 1 1 s u u...

unicode 在python3中的編碼問題

u u 表示unicode字串 example u string 不是僅僅是針對中文,可以針對任何的字串,代表是對字串進行unicode編碼。一般英文本元在使用各種編碼下,基本都可以正常解析,所以一般不帶u 但是中文,必須表明所需編碼,則一旦編碼轉換就會出現亂碼。建議所有編碼方式採用utf8 r r...