Python中的編碼

2021-05-11 14:38:16 字數 1245 閱讀 9599

原文:http://users.ir-lab.org/~liulong/blog/archives/001962.html

計算機以0,1二進位制位來儲存資訊,所以字元在計算機中的表示也是二進位制位,那每個字元所對應的二進位制位是什麼,在開始的計算機中因為只考慮英語, 所以不超過256個字元,即用乙個位元組(8bit)就足可以表示所有的字元,這個對應關係就是對字元的編碼,用乙個唯一的位元組碼來表示唯一的字元.但是隨 著要對漢字,日語等其他語言的處理,這樣的編碼滿足不了需求,各個地區,國家就針對各自的語言建立了自己的一套編碼,比如gb2312,gbk,等 等....這樣是解決了一部分問題,但是這就給不同的系統,平台之間的互動造成了很大的障礙,為了解決此問題,出現了unicode,它為每種語言中的每 個字元設定了統一並且唯一的二進位制編碼,以滿足跨語言、跨平台進行文字基準轉換、處理的要求。每個字元都用若干個位元組來表示,這樣就解決了平台,系統之間 的互動問題,但是unicode有個缺點,因為它每個字元都用若干位元組來表示,即使是單位元組的字元,這就造成了時間和空間上的浪費,因此出現了utf,是 中間轉換編碼,有utf8,utf16,utf7等.出現了多種編碼之後,在不同的系統,平台之間或程式介面中要涉及到編碼的轉換,常見的轉換有:

1.unicode->其它編碼

例如:a為unicode編碼 要轉為gb2312:a.encode('gb2312')

2.其它編碼->unicode

例如:a為gb2312編碼,要轉為unicode: unicode(a, 'gb2312')或a.decode('gb2312')

3,編碼1 -> 編碼2

先轉為unicode再轉為編碼2

如gb2312轉utf8

unicode(a, 'gb2312').encode(utf-8)

目前為止我不知道如何判斷乙個字元的編碼是何種編碼,只是從程式中拋異常,等其他方式來判斷,但是有可以判斷是否是unicode的方法:

isinstance(s, str) 用來判斷是否為一般字串

isinstance(s, unicode) 用來判斷是否為unicode

如果要把一定編碼的字串行寫到檔案裡,只要把字串行編碼為所需編碼即可,例如:

l = '劉龍'

l = unicode(l, 'cp936')

l = l.encode('utf-8')

open('test.txt','w').write(l)

····呵呵,unicode就像乙個平台,把大家都統一到一起了。但是有點浪費空間啊,所以大家決定自己到了統一平台之後再定製一下也不錯。

Python中的編碼

encode 方法 把字串變成用於儲存或傳輸的位元組序列就是編碼 decode 方法 把位元組序列變 類可讀的文字字串就是解碼 示例 4 1 編碼 如果想幫助自己記住 decode 和 encode 的區別,可以把位元組序列想成晦澀難懂的機器磁芯轉儲,把 unicode 字串想成 人類可讀 的文字。...

Python 中的字元編碼

1 str型別可以理解為乙個二進位制block,或multibyte 2 multibyte str.decode unicode 3 unicode str.encode multibyte str binary block 4 unicode str 的操作引數也應為unicode,如 unic...

python中的編碼處理

usr bin env python coding cp936 import codecs import sys if name main if len sys.argv 5 print python s infile decodetype outfile encodetype sys.argv 0...