日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

编码gbk的不可映射字符_Python基础:编码表和字符的故事

發(fā)布時間:2023/12/15 python 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 编码gbk的不可映射字符_Python基础:编码表和字符的故事 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

在計算機內部,都是每8位組成的一個個字節(jié),比如我們使用"abc".encode()把abc轉化成二進制byte類型,注意byte是不可變類型:

編碼過程

>>> abc.encode() # 把str字符變?yōu)閎ytes字節(jié)類型;字符是一個個連接的,轉化出來的bytes也是一個個連續(xù)的。 b'abc' >>> "阿".encode("utf-8") # 一個漢字 uft-8里多是3個字節(jié) b'xe9x98xbf' >>> "阿".encode("gbk") # 一個漢字 gbk里是2個字節(jié) b'xb0xa2'

解碼過程

>>> b'xe9x98xbf'.decode() #使用默認的utf-8 進行解碼 '阿' >>> b'xb0xa2'.decode("gbk") # 因為剛才是用gbk編碼的,我們就用gbk解碼,否則就會亂碼 '阿' >>> b'abc'.decode() # **這里要注意不要看這里的abc**,這里的abc只是一種展現(xiàn)形式, #因為這只是二進制的展示形式 'abc'

ASCII 碼

從0到127,共128種變化。它是用1個字節(jié)(1個字節(jié)有8位)表示的。 關于8位,就是從0000 0000到1111 1111組成的數(shù)字,最高位不動,剩下的低7位變化,所以共有(2的8次方,1 0000 0000,即128)種狀態(tài),即0-127,其中127對應的就是0FFF FFFF。

為了用計算機表達字符,人們建了對照表。 比如1,對于計算機來說,計算機里原本是0000 0001,我們告訴計算機不要把0100 0001當65看了,請把它當a看

計算機中,內存只能保存數(shù)字,那對于文字該怎么辦呢? 對于文字 我們告訴內存這個東西請當做文字處理而不是數(shù)字; 那么,我們就要給計算機一個表,這個表的本質就是數(shù)值和字符的對應映射關系

類似這樣比較常見建議背誦的有: - 09>>> TAB

>>> c = "t" # 轉義字符的tab >>> c 't' >>> c = "x09" # 十六進制的9 >>> c 't'
  • 0d0a >>> 回車換行 # 即十進制的1310
>>> d = "rn" >>> d 'rn' >>> d = "x0dx0a" >>> d 'rn'
  • 0x20>>>空格 即decimal 32
>>> e = " " >>> e ' ' >>> e = "x20" >>> e ' '
  • 阿拉伯數(shù)字0x31 >>>字符1 即decimal 49
>>> c =1 # 整數(shù)1與ascii碼表無關 >>> d = "1" # 字符1,那就要查表 >>> d '1' >>> d = "x31" >>> d '1'
  • A >>> 0x41 即 65
  • a>>> 0x61 即97
>>> x = "x41" >>> x 'A' >>> y = "x61" >>> y 'a' # 舉例 >>> z = "ax09bx0dx0ac x31x41x61" # 相當于z = 'atbrnc 1Aa' >>> z 'atbrnc 1Aa'

大小規(guī)則 常見ASCII碼的大小規(guī)則:09<AZ<a~z。 1)數(shù)字比字母要小。如 “7”<“F”; 2)數(shù)字0比數(shù)字9要小,并按0到9順序遞增。如 “3”<“8” ; 3)字母A比字母Z要小,并按A到Z順序遞增。如“A”<“Z” ; 4)同個字母的大寫字母比小寫字母要小32。如“A”<“a” 。 幾個常見字母的ASCII碼大小: “A”為65;“a”為97;“0”為 48 [4] 。

單字節(jié)的故事:歐美國家

ASCII碼0-127低8位解決了英語問題,歐洲法國德國俄國西班牙等,就用了高8位,各自解決了自己的信息化問題:即==低8位兼容ascii碼,高8位各自為政== 高八位加低八位共一個字節(jié)。

雙字節(jié)的中文GB2312>>GBK

僅僅能夠解決英美國家拉丁文等字母文字的編碼,但無法解決中文體系的方塊字,因為方塊字的數(shù)量太多了。一個字節(jié)不夠,于是我們開始使用2個字節(jié)即65536種狀態(tài)表達漢字。 為了兼容ASCII碼,漢字是把雙字節(jié)的每一個0x80之前的都讓過的。比如啊,xb0xa1,每個字節(jié)都高于0x800x80。 GB2312漢字數(shù)量較少(也包含了部分日文),最后發(fā)展成了GBK,現(xiàn)在window內部使用額就是雙字節(jié)的GBK。

雙字節(jié)的統(tǒng)一:unicode

Unicode和iso都可以實現(xiàn)用雙字節(jié)把全世界已知字符收錄,后來合二為一成為Unicode。 Unicode和GBK之間存在映射關系

互聯(lián)網(wǎng)時代,雙字節(jié)的進化-utf-8

Unicode始終是雙字節(jié),這樣本來用單字節(jié)表達的字母,也需要用雙字節(jié),影響了網(wǎng)絡時代的網(wǎng)絡傳輸。 于是適應網(wǎng)絡時代的utf-8出現(xiàn)了,utf-8有1-6個字節(jié)兼容了所有字節(jié),ascii碼依然是單字節(jié);中文字符大多落在3個字節(jié)。

last not the least: str在字符的世界中,是有編碼的,要查編碼表; bytes在字節(jié)的世界里,只有一個個字節(jié),沒有編碼。

今日雞湯: 標準之爭才是至高爭奪。

總結

以上是生活随笔為你收集整理的编码gbk的不可映射字符_Python基础:编码表和字符的故事的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。