运行环境在Python3.6下,Python2的解决方案网上有很多. ---2017.10.18

第一种方法:Unicode码

在unicode码中,汉字的范围是(0x4E00, 9FBF)

import random

def Unicode():
    val = random.randint(0x4e00, 0x9fbf)
    return chr(val)

这个方法比较简单,但是有个小问题,unicode码中收录了2万多个汉字,包含很多生僻的繁体字.

第二种方法:GBK2312

gbk2312对字符的编码采用两个字节相组合,第一个字节的范围是0xB0-0xF7, 第二个字节的范围是0xA1-0xFE.
对GBK2312编码方式详细的解释请参看GBK2312编码

import random

def GBK2312():
    head = random.randint(0xb0, 0xf7)
    body = random.randint(0xa1, 0xf9)   # 在head区号为55的那一块最后5个汉字是乱码,为了方便缩减下范围
    val = f'{head:x}{body:x}'
    str = bytes.fromhex(val).decode('gb2312')
    return str

GBK2312收录了6千多常用汉字.两种方法的取舍就看需求了.

另外推荐一篇对于deocde和encode的讲解的博文

posted on 2017-10-17 15:56  雷子-LL  阅读(8261)  评论(5编辑  收藏  举报