源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

基于python的汉字转GBK码实现代码

  • 时间:2021-03-16 00:52 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:基于python的汉字转GBK码实现代码
[img]http://files.jb51.net/upload/201202/20120219202439166.png[/img] 如图,“广”的编码为%B9%E3,暂且把%B9称为节编码,%E3为字符编码(第二编码)。 思路: 从GBK编码页面收集汉字 http://ff.163.com/newflyff/gbk-list/ 从实用角度下手,只选取“● GBK/2: GB2312 汉字”这一节,共3755个汉字。 看规律:小节编码从B0-D7,而针对汉字的编码从A1-FE,即16*6-2=94,非常有规律性。 第一步:把常用的汉字用python提取出来,按顺序存到一个字典文件里面,汉字用空格分隔。 第二步:根据编码从A1-FE,每节94个汉字的规律,先定位节编码,利用汉字在某一节的位置定位字符编码 实施: 第一步:提取汉字
[url=http://dl.dbank.com/c0m9selr6h]http://dl.dbank.com/c0m9selr6h[/url] [b]第二步:索引汉字 [/b]索引就是个简单算法,因为字典里面的汉子是按照原先顺序存储的,而且GBK编码表2的3755个汉字严格遵守每节94个汉字的规律,那就来个简单的除数取整+1来定位小节编码,再用汉字索引-节索引*94得到汉字在这一小节中的索引,然后利用上面生成的A1-FE list和索引来定位第二编码。 算法思路有了,编码,然后调试 附上python代码和注释:
[u]复制代码[/u] 代码如下:
def getGBKCode(gbkFile='E:/GBK1.1.txt',s=''): #gbkFile字典文件 共3755个汉字 #s为要转换的汉字,暂且为gb2312编码,即从IDLE输入的汉字编码 #读入字典 with open(gbkFile) as f: gbk=f.read().split() #生成A1-FE的索引编码 t=['A1'] while True: if t[-1]=='FE': break if (ord(t[-1][1])>=48 and ord(t[-1][1])<57) or (ord(t[-1][1])>=65 and ord(t[-1][1])<70): t.append(t[-1][0]+chr(ord(t[-1][1])+1)) continue if ord(t[-1][1])>=57 and ord(t[-1][1])<65: t.append(t[-1][0]+chr(65)) continue if ord(t[-1][1])>=70: t.append(chr(ord(t[-1][0])+1)+chr(48)) continue #依次索引每个汉字 l=list() for st in s.decode('gb2312'): st=st.encode('utf-8') i=gbk.index(st)+1 #小节编码从B0开始,获取汉字的小节编码 t1='%'+t[t.index('B0'):][i/94] #汉字在节点中的索引号 i=i-(i/94)*94 t2='%'+t[i-1] l.append(t1+t2) #最后用空格分隔输出 return ' '.join(l)
[img]http://files.jb51.net/upload/201202/20120219202439173.png[/img] 得承认我的python代码不是那么工整 附上我的微博ID:小栾Cooper
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部