pythonでのunicode符号化


要約、python 1.6からunicode文字を処理できます.
 
一、いくつかの一般的な符号化フォーマット.
1.1、ascii、1バイトで表す.
1.2、UTF-8は、1~3バイトで表され、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形式であることを認識することができて、しかしe clipseでソースファイルを編集するならば、エディタの中でファイルがUTF-8にコードすることを指すが、しかしBOMマークに記入していないため、ソースファイルの先頭に#coding=utf-8を付けなければならないので、解釈器のソースファイルの符号化方法を注釈で提示するのは面白いです.
 
2.4、例:例えば、我々は端末に「私は中国人です」を輸出する. 
#coding=utf-8       python      utf-8  ,    eclipse+pydev
print "     "  #         UTF-8  

2.5、もちろん他のunicodeコード、例えばGB 2312、SHIFT_JISなどですが、UTF-8を使うことをお勧めします.中国語と日本語の文字を同時に表示できるなど、より多くの文字を表示します.
 
三、符号化の変換、二つの符号化の変換はUTF-16を中継局とする.
例:テキストファイルjapがある場合.txt,中には「私は中国人です.」という内容があります.コードフォーマットは日本語コードSHIFT_JIS,
もう1つのテキストファイルchn.txt、内容は「中華人民共和国」、符号化フォーマットは中国語符号化GB 2312.
私たちはどのように2つのファイルの内容を統合して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符号化されます.