由此我們也可以知道gb2312的編碼範圍為0xa1a1-0xfefe
因此接下的事情就是每兩個字元判斷一下它們的取值範圍,如果滿足則說明是gb2312編碼
這裡再說一下全形字符和半形字元的區別,在gb2312中,第三區位的區位表全形字符佔2個位元組
,而半形字元只佔1個位元組
,對於第三區位
的字元來說,半形字元的值=全形字符的第二個位元組-0x80h
。至於為什麼是減掉80h,是因為為了相容
原先的ascii碼,ascii的範圍為0~127(十進位制),因此減掉80h的半形字元即為對應的ascii編碼值。
下面是實現的**,這裡注意的是轉化的全形僅僅包括字母和數字,下面的**僅適用於編碼為gb2312的檔案。
def
f2b(contents:
bytes):
r =bytearray()
skip =
false
for i in
range
(len
(contents)-1
):if skip:
skip =
false
continue
t1 = contents[i]
t2 = contents[i +1]
skip =
true
# 兩個位元組都新增,則要跳過下乙個位元組
if t1 ==
0xa3
and(
0xb0
<= t2 <=
0xb9
or0xc1
<= t2 <=
0xda
or0xe1
<= t2 <=
0xfa):
0x80
)# 空格
elif
0xa1
== t1 and
0xa1
== t2:
0x20
)# 忽略ascii
elif t1 <=
127:
skip =
false
else
:# 補充末尾,如果最後沒有跳過字元的話
ifnot skip:-1
])return r
GB2312編碼範圍
gb2312編碼範圍 a1a1 fefe,其中漢字編碼範圍 b0a1 f7fe。gb2312編碼是第乙個漢字編碼國家標準,由中國國家標準總局1980年發布,1981年5月1日開始使用。gb2312編碼共收錄漢字6763個,其中一級漢字3755個,二級漢字3008個。同時,gb2312編碼收錄了包括拉...
GB2312的編碼規則
gb2312標準共收錄6763個漢字,其中一級漢字3755個,二級漢字3008個 同時,gb2312收錄了包括拉丁字母 希臘字母 日文平假名及片假名字母 俄羅斯語西里爾字母在內的682個全形字符。gb2312的出現,基本滿足了漢字的計算機處理需要,它所收錄的漢字已經覆蓋99.75 的使用頻率。gb2...
編碼學習整理(二) GB2312
gb 2312或gb 2312 80是乙個簡體中文 字符集的中國國家標準,全稱為 資訊交換用漢字編碼字符集 基本集 又稱為gb0,由中國國家標準總局發布,1981年 5月1日實施。gb2312編碼通行於中國大陸 新加坡等地也採用此編碼。中國大陸幾乎所有的中文系統和國際化的軟體都支援gb 2312。g...