主要介紹了python的編碼機制,unicode, utf-8, utf-16, gbk, gb2312,iso-8859-1 等編碼之間的轉換。
常見的編碼轉換分為以下幾種情況:
可以使用 chardet 模組自動識別 字元創編碼
chardet 使用方法
例如:a為unicode編碼 要轉為gb2312。a.encode('gb2312')
# -*- coding=gb2312 -*-
a = u"中文"
a_gb2312 = a.encode
('gb2312'
)print a_gb2312
gb 碼,全稱是gb2312-80《資訊交換用漢字編碼字符集基本集》,2023年發布,是中文資訊處理的國家標準,在大陸及海外使用簡體中文的地區(如新加坡等)是強制使用的唯一中文編碼。p- windows3.2和蘋果os就是以gb2312為基本漢字編碼, windows 95/98則以gbk為基本漢字編碼、但相容支援gb2312。gb碼共收錄6763個簡體漢字、682個符號,其中漢字部分:一級字3755,以拼音排序,二級字3008,以偏旁排序。該標準的制定和應用為規範、推動中文資訊化程序起了很大作用。
gbk編碼是中國大陸制訂的、等同於ucs的新的中文編碼擴充套件國家標準。gbk工作小組於2023年10月,同年12月完成gbk規範。該編碼標準相容gb2312,共收錄漢字21003個、符號883個,並提供1894個造字碼位,簡、繁體字融於一庫。
gbk 包括 gb2312的所有編碼,有些字gb2312沒有,需要用gbk來編碼。
** gbk, gb2312,big5,unicode,utf-8,utf-16的區別
例如:a為gb2312編碼,要轉為unicode. unicode(a, 'gb2312')或a.decode('gb2312')
# -*- coding=gb2312 -*-
a = u"中文"
a_gb2312 = a.encode
('gb2312'
)print a_gb2312
a_unicode = a_gb2312.decode
('gb2312'
)assert
(a_unicode == a)
a_utf_8 = a_unicode.encode
('utf-8'
)print a_utf_8
編碼1(gbk,gb2312) 轉換為 編碼2(utf-8,utf-16,iso-8859-1)
可以先轉為unicode再轉為編碼2
如gb2312轉utf-8
# -*- coding=gb2312 -*-
a = u"中文"
a_gb2312 = a.encode
('gb2312'
)print a_gb2312
a_unicode = a_gb2312.decode
('gb2312'
)assert
(a_unicode == a)
a_utf_8 = a_unicode.encode
('utf-8'
)print a_utf_8
isinstance(s, str) 用來判斷是否為一般字串
isinstance(s, unicode) 用來判斷是否為unicode
如果乙個字串已經是unicode了,再執行unicode轉換有時會出錯(並不都出錯)
下面**為將任意字串轉換為unicode
def u(s, encoding):
ifisinstance
(s, unicode
): return s
else:
return
unicode
(s, encoding)
為什麼不所有的檔案都使用unicode,還要用gbk,utf-8等編碼呢?
unicode可以稱為抽象編碼,也就是它只是一種內部表示,一般不能直接儲存。
儲存到磁碟上時,需要把它轉換為對應的編碼,如utf-8和utf-16。
除上以上的編碼方法,在讀寫檔案時還可以使用codecs的open方法在讀寫時進行轉換。
可以用python自帶的模組locale來檢測命令列預設編碼和設定命令列編碼。
import
locale
#get
locale.getdefaultlocale()
#('zh_cn', 'cp936')
#set
locale.setlocale
(...)
pd_name = pd_name.decode
('utf-8'
)print pd_name
nname = ""
for c in pd_name:
c = "%%u%04x"
%ord
(c);
nname += c
Python 編碼轉換
coding utf 8 s abc print type s str utf 8 print len s 3 s unicode s str unicode,其中str的每個字元值必須小於128 print type s unicode print len s 3 s u abc print ty...
python編碼轉換
參見 主要介紹了python的編碼機制,unicode,utf 8,utf 16,gbk,gb2312,iso 8859 1 等編碼之間的轉換。常見的編碼轉換分為以下幾種情況 1.自動識別字串編碼 coding utf8 import urllib import chardet rawdata ur...
Python 編碼轉換
coding utf 8 s abc print type s str utf 8 print len s 3 s unicode s str unicode,其中str的每個字元值必須小於128 print type s unicode print len s 3 s u abc print ty...