你那裡可能有些地方不是太清楚吧,比如沒有說到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 ...