接Unicode及編碼處理心得

2021-03-31 15:40:58 字數 1008 閱讀 2841

你那裡可能有些地方不是太清楚吧,比如沒有說到decode,所以很多人還是不明白

怎麼轉來轉去的,我來補充一下,可能大部分跟你所說的有重複。

unicode字串其實字串以unicode為內碼存放在記憶體中。有些平台上,使用2個

位元組表示乙個字元(英文本母和中文漢字都是用雙位元組來表示),稱為ucs-2;也

有平台採用4位元組表示乙個字元,稱為ucs-4;這時,2個位元組(或4個)是作為一

個單位來處理的,拆開沒有意義,就好像乙個 ascii字元的位元組只取4個位的值一

樣。python採用的是ucs-2。因為unicode字串包括了幾乎所有文字,所以我們應

該盡量採用 unicode字串。

(ucs-2和ucs-4這可以在網上找到解釋。)

以上講的是內碼,如果要把unicode字串通過網路傳送,或者寫入檔案,這些都

是流io處理,以位元組為單位,也稱位元組流。這就要把雙位元組或四位元組單位轉成位元組

單位,稱為編碼(encode);而乙個非unicode字串要轉換成unicode字串,就

稱為解碼(decode)。

另外要區分ucs-2和utf-16,前面已經說了,ucs-2中單個位元組無意義,不代表哪

乙個字元,所以要把unicode字串以utf-16編碼存入檔案,也要編碼:

f = open ('test.txt', 'wb+') #注意要以二進位制方式開啟檔案

a = unicode('中國', 'cp936')

# 生成乙個unicode字串,可以用a = '中國'.decode('cp936')替換,可能會更

清楚,與encode呼叫對稱。

f.write(a.encode('utf-16'))

#可以試試其它編碼如utf-8,會生成unicode檔案頭標識,windowsxp的記事本也能

夠識別這種格式,開啟另存為,就會顯示當前的編碼。

f.close()

另外,呼叫unicode('中國', 'cp936')就是乙個解碼。

字元編碼及檔案處理

字元編碼及檔案處理 文字編輯器的輸入與輸出是兩個過程 輸入 人能看懂的字元 字元編碼表 二進位制數字 計算機能識別的 字元編碼表就是字元與數字的對應關係 字元編碼表 1.ascii碼表 八位二進位制表示乙個英文本元 所有的英文本元 符號也就125位左右 八位二進位制也叫8bit 8bit 1 byt...

python異常處理及Url編碼

url編碼 import traceback import urllib.parse s besttest 自動化測試 print urllib.parse.quote s url編碼 print urllib.parse.quote plus s url編碼,src print urllib.pa...

ProxyHandler處理器及編碼學習

1 今天學習proxyhandler,主要用這個來請求 伺服器首先建立乙個handler request.proxyhandler handler是偽裝本地位址 我通過請求本地ip,每次不一樣,應該是我們家裡的ip都是隨機變動的。1 西刺免費 2 快 3 雲 請求handler後再建立opener ...