python 編碼轉換

2021-06-28 22:03:07 字數 2584 閱讀 4955

主要介紹了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...