GB2312編碼下全形轉半形的Python實現

2021-09-24 17:44:21 字數 1352 閱讀 4813

由此我們也可以知道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...