编码(decode与encode)
目錄
- 1. 什么是編碼
- 2. 編碼方式屬性
- 3. decode與encode
1. 什么是編碼
事實上計算機只認0或1,然而卻可以通過計算機來顯示文本,這就是靠編碼來實現的。
編碼其實就是約定的一個協議,比如ASII編碼約定了大寫字母A對應十進制65,那么在讀取一個字符串的時候,看到65,計算機就知道這是大寫字母A的意思
由于計算機是美國發明的,所以這個ASCII編碼設計時只采用1個字節存儲,包含了大小寫英文字母、數字和一些符號。但是計算機在全世界普及之后,ASCII編碼就成了一個瓶頸,因為1個字節是完全不足以表示各國語言的
大家知道英文只用26個字母就可以組成不同的單詞,而漢字光長用字就有好幾千個,至少需要2個字節才足以存放,所以后來中國制定了GB2312,用于對漢字進行編碼
然后的然后日本,韓國也制定了各自的編碼,然后就出現沖突了,就導致了最初計算機上總是容易看到亂碼的現象
為了解決這個問題,Unicode編碼應運而生。Unicode組織的想法最初也很簡單,創建一個足夠大的編碼,將所有國家的編碼都加進來,進行統一標準。
隨著問題的解決,新的問題也出現了,如果你寫的文本只包含英文和數字,那么用Unicode編碼就顯得特別浪費存儲空間(使用ASCII編碼只占用一半的存儲空間),所以本著能省一點是一點的精神,Unicode還創造了多種實現方式
比如常見的UTF-8編碼就是Unicode的一種實現方式,它是可變長編碼。
簡單來說就是,當文本是ASCII編碼的字符時,它用1個字節存放;而當文本是其他Unicode字符的情況,它將按一定的算法轉換,每個字符使用1~3個字節存放。
2. 編碼方式屬性
| GB2312編碼專門用來解決中文編碼的,是雙字節的,并且不論中英文都是雙字節的;包含全部中文字符;總的來說GB2312編碼方式的編碼是以中國國情而創造的,在國際上的兼容性不好。 | UTF-8 編碼是Unicode的一種實現方式,因為對于大多數語言,只需要一個字節就能夠編碼,如果都采用Unicode會極大浪費,于是出現了可變長編碼UTF-8。它對英文使用8位(即一個字節),中文使用24位(三個字節)來編碼。另外,如果是外國人訪問你的GB2312網頁,需要下載中文語言包支持。訪問UTF-8編碼的網頁則不出現這問題。可以直接訪問。這也是為什么大多數的網頁是使用UTF-8編碼而不是GB2312。 | 目前幾乎收納了全世界大部分的字符。所有的字符都有唯一的編號,這就解決了解碼的沖突!但是,unicode把大家都歸納進來,卻沒有為編碼的二進制傳輸和二進制解碼做出規定。 |
3. decode與encode
| decode的作用是將其他編碼的字符串轉換成unicode編碼,如str1.decode(‘gb2312’),表示將gbk編碼的字符串str1轉換成unicode編碼。 | encode的作用是將unicode編碼轉換成其他編碼的字符串,如str2.encode(‘gb2312’),表示將unicode編碼的字符串str2轉換成gbk編碼。 |
該方法返回編碼后的字符串
u='我喜歡你啊!' str1=u.encode('gb2312') print(str1) # b'\xce\xd2\xcf\xb2\xbb\xb6\xc4\xe3\xb0\xa1\xa3\xa1'該方法返回解碼后的字符串
u='我喜歡你啊!' str1=u.encode('gb2312') print(str1.decode('gb2312')) # 我喜歡你啊!總結
以上是生活随笔為你收集整理的编码(decode与encode)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Quartus安装破解失败试了一些方法汇
- 下一篇: 四种大数据分析方法 ,大数据学习入门必须