計算機只能處理數字,文字轉換成數字才能處理。
計算機中8個bit作為乙個位元組byte,所以乙個位元組最大的表示數字就是255
ascii碼
乙個位元組表示 --- 美國的標準編碼 ---- 最多表示255個字元
中國 gb2312
用兩個位元組表示乙個漢字,把ascii碼也包含進去
unicode
全球統一的編碼 ,用16,32bit 把 所有的語言都統一到一套編碼中
例子:
字母 a -- ascii 65 uincode 0000 0000 0100 0001 二進位制 0100 0001
漢字 中 -- ascii 已經超出 uinicode 20013 二進位制 0100 1110 0010 1101
unicode --- 英文會多一倍的空間,和傳輸時間
utf-8
可變長 編碼 ---utf-8
用於傳輸和儲存(3個位元組表示乙個中文)
注意 : 在記憶體計算,程式設計的時候 --- 定長的 unicode 更好使用
python中獲取 預設的解碼方式
import sys
sys.getdefaultencoding()
python 2.x 需要在檔案上方宣告檔案的編碼方式# -*- coding: utf8 -*-,可以通過str.decode/str.encode處理字串的文字編碼
sys.setdefaultencoding('utf-8')來保證我們的編碼
python直譯器在 執行py檔案的時候,遇到(沒有指定 decode 方式的情況下) str 會按照 預設的解碼方式進行解碼;
即 sys.getdefaultencoding()得到的編碼方式, 所以py2中的中文會和ascii衝突出錯,需要開頭指定 解碼方式
py2 -- ascii 需要 *coding:utf8* 指明,, 或者u』中文』保證被轉換成 unicode 編碼
py3 -- utf8
例子:
(1) s = '你好'
r = s.decode('utf-8').encode('gb2312')
print r
報錯 syntaxerror: non-ascii character '\xe4' in file
(2) # _*_coding:utf-8_*_
s = '你好'
r = s.decode('utf-8').encode('gb2312')
print r
正確
這種問題在py3 中已經不存在
py 2 有str 和 unicode 兩種 資料型別,str型別需要 先decode
py 3 只有 unicode,所以可以直接encode
window --- gb2312編碼
linux ---- utf8
enocde 之前 要先轉換成 unicode
字串編碼
1.unicode 的編碼方式 編碼類似1小時和60分鐘的關係,本質的時間刻度還是相同的。unicode 編碼有 utf 8 utf 16 和 utf 32 它們都是將數字轉換到程式資料的編碼方案。utf 8 以位元組為單位。表示乙個字元時,能用乙個位元組就不用兩個或者三個位元組表示。utf 16 ...
字串與編碼
首先應該把位元組陣列看成是string的載體。dot net使用的字串string是unicode編碼的 它也是以unicode編碼的形式顯示字串。以下是用自己語言對幾個常用函式的說明 自己總結的,反正看不明msdn bytes system.text.encoding.unicode.getbyt...
Python字串編碼
在python中有些特殊的地方是存在兩種字串,分別為str和unicode字串,他們都繼承自basestring。如 s hello world s為str us u hello world us為unicode。使用help str 和help unicode 可以檢視各自說明,他們都有decod...