1. 程式人生 > >〖Python〗-- 編碼轉換

〖Python〗-- 編碼轉換

mage 韓文 國家 跳板 def odin bsp unicode color

【字符編碼與轉碼】

為什麽要進行編碼和轉碼

由於每個國家電腦的字符編碼格式不統一(列中國:GBK),同一款軟件放到不同國家的電腦上會出現亂碼的情況,出現這種情況如何解決呢?! 當然由於所有國家的電腦都支持Unicode萬國碼,那麽我們可以把Unicode為跳板,先把字符編碼轉換為Unicode,在把Unicode轉換為另一個國家的字符編碼(例韓國),則不會出現亂碼的情況。當然這裏只是轉編碼集並不是翻譯成韓文不要弄混了。

技術分享

Python3.0進行編碼轉換

# __author__:"ShengXin"
# __date__:2017/9/9

#Python3.0環境
import sys,chardet
 
print (sys.getdefaultencoding()) #獲取默認編碼(UTF-8) name = "盛欣" #此時name為Unicode編碼 name_utf8 = name.encode("utf-8") #轉為UTF-8編碼 print(name_utf8) print(chardet.detect(name_utf8)) #註:Unicode編碼無法用chardet查看編碼格式 print(name_utf8.decode("utf-8")) #編碼為UTF-8後再轉碼為Unicode
name_gbk = name.encode("gbk") #轉為GBK編碼 print(name_gbk) print(chardet.detect(name_gbk)) #查看當前的字符編碼格式 print(name_gbk.decode("gbk")) #編碼為GBK後再轉碼為Unicode #utf-8 #b‘\xe8\xbf\x9e\xe5\xbf\x97\xe9\x9b\xb7‘ #{‘confidence‘: 0.87625, ‘encoding‘: ‘utf-8‘} #盛欣 #b‘\xc1\xac\xd6\xbe\xc0\xd7‘
#{‘confidence‘: 0.73, ‘encoding‘: ‘windows-1252‘} #盛欣

Python2.0中的編碼轉換

① 聲明字符編碼(utf-8)

# __author__:"ShengXin"
# __date__:2017/9/9
 
#Python2.0環境  默認編碼ascii
import sys
name = "你好"            #ascii碼裏是沒有字符“你好”的,此時的name為uft-8
 
print (sys.getdefaultencoding())        #獲取默認編碼
print(name.decode("utf-8"))            #把uft-8碼解碼為Unicode
 
name_unicode=name.decode("utf-8")
print (name_unicode,type(name.decode("utf-8"))) #查看當前的字符編碼
 
name_gbk=name_unicode.encode("gbk")     #把字符有Unicode轉換為gbk
print(name_gbk)
 
#ascii
#你好
#(u‘\u4f60\u597d‘, <type ‘unicode‘>)
#???

② 使用默認字符編碼(ascii)

# __author__:"ShengXin"
# __date__:2017/9/9
import sys
name = "nihao"              #英文字符,且第二行字符聲明去掉,此刻name為ascii碼
 
print (sys.getdefaultencoding())        #獲取系統編碼
name_unicode = name.decode("ascii")     #ascii碼轉換為unicode
print(name_unicode,type(name_unicode))
 
name_utf8=name_unicode.encode("utf-8")  #unicode轉換為utf-8
print(name_utf8,type(name_utf8))
 
 
name_gbk=name_unicode.encode("gbk")     #unicode轉換為gbk
print(name_gbk,type(name_gbk))
 
#ascii
#(u‘nihao‘, <type ‘unicode‘>)
#(‘nihao‘, <type ‘str‘>)
#(‘nihao‘, <type ‘str‘>)

總結:Python2.x裏默認字符編碼為ascii,如果不聲明編碼格式,則輸入的字符格式都是ascii碼(中文不在ascii裏面,輸入報錯);如果要輸入中文字符,則需要聲明編碼格式,此時中文字符的編碼格式不跟隨默認字符編碼格式,而是與聲明的編碼格式一致(上面實例為utf-8),這些都需謹記。

〖Python〗-- 編碼轉換