代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 |
#!/use/bin/env python3 #coding=gb18030 fmt="'{}','{}'\n" f = open('character_gb18030.sql','w', encoding='gb18030') # 单字节部分(0x80 不在gb18030范围) f.write('--echo 单字节部分\n') for i in range(0x01, 0x80): b = bytes([i]) code = b f.write(fmt.format(code.hex().upper(), code.decode('gb18030'))) # 双字节部分1 f.write('--echo 双字节部分1\n') for i in range(0xB0, 0xF7+1): w1 = bytes([i]) for j in range(0xA1, 0xFE+1): w2 = bytes([j]) code = w1+w2 f.write(fmt.format(code.hex().upper(), code.decode('gb18030'))) # 双字节部分2 f.write('--echo 双字节部分2\n') for i in range(0x81, 0xA0+1): w1 = bytes([i]) for j in range(0x40, 0xFE+1): if j in [0x7f]: continue else: w2 = bytes([j]) code = w1+w2 f.write(fmt.format(code.hex().upper(), code.decode('gb18030'))) # 双字节部分3 f.write('--echo 双字节部分3\n') for i in range(0xAA, 0xFE+1): w1 = bytes([i]) for j in range(0x40, 0xA0+1): if j in [0x7f]: continue else: w2 = bytes([j]) code = w1+w2 f.write(fmt.format(code.hex().upper(), code.decode('gb18030'))) # 四字节部分1 f.write('--echo 四字节部分1\n') for i in range(0x81, 0x82+1): dw1 = bytes([i]) for j in range(0x30, 0x39+1): dw2 = bytes([j]) for m in range(0x81, 0xFE+1): dw3 = bytes([m]) for n in range(0x30, 0x39+1): dw4 = bytes([n]) code = dw1+dw2+dw3+dw4 f.write(fmt.format(code.hex().upper(), code.decode('gb18030'))) # 四字节部分2 f.write('--echo 四字节部分2\n') for i in range(0x95, 0x98+1): dw1 = bytes([i]) for j in range(0x30, 0x39+1): dw2 = bytes([j]) for m in range(0x81, 0xFE+1): dw3 = bytes([m]) for n in range(0x30, 0x39+1): dw4 = bytes([n]) code = dw1+dw2+dw3+dw4 f.write(fmt.format(code.hex().upper(), code.decode('gb18030'))) |
用来给数据库导入用的,基本上可以用,如果你的数据库语法有差异,将fmt格式化内容修改一下就好了。