有时候需要一些测试数据,特别是需要公开的时候,比如有些学习材料里讲解怎样用Excel的姓氏笔画排序,一些随机没有意义的人名是很有用的。 这样我们就需要有一个能够随机生成汉字字符串的工具。最简单的汉字串是从GB2312里面获得。 这让我专门去看了一下GB2312编码。GB2312是国家标准局1980年制订、1981年5月执行的标准,在2017年的时候划为推荐标准,不再强制执行,该标准现编号为GB/T 2312-1980。在国家标准全文公开系统 https://openstd./bzgk/gb/newGbInfo?hcno=5664A728BD9D523DE3B99BC37AC7A2CC 可以查阅全文。 及 在其“4.图形字符”条目4.3.10处,介绍为“汉字6763个,分成两级。第一级汉字3755个,第二级汉字3008个”。一级汉字按拼音排列,二级汉字按部首排列。 一级汉字3755个从16区排到55区,二级汉字3008个从56区排到87区;每个区内排94个位,这就是区位码的由来。 例如第16区第1位,其第1字节给出了7位二进制码,首位被1,为10110000,十六进制为B0(十进制176);第2字节补1后为10100001,十六进制为A1(十进制161)。这样,这个位置“啊”字就被编码为二进制H(10110000)L(10100001),十六进制则为H(B0)L(A1),即高位和低位两个字节。(以往说一个汉字两个字节,就从这里来的,不过现在有了UTF8编码,可以变长,一个汉字,它可能是个少数民族字符,可能会3个或4个字节) 第一字节从16区至55区即B0至F7连续,共72个区;第二字节从A1位至FE位连续,共94个位,其中55区即D7区尾部少5个,即D7FA、D7FB、D7FC、D7FD、D7FE不排,因此这些汉字一共72×94-5=6763。常用汉字6763个就这么来的。 现在可以生成随机汉字了。 创建一个函数,用Character_Count控制生成的汉字个数,用Common控制是否只从最最常用的3755个汉字中生成: 调用它,每次生成20个随机的人名儿: 实际还能做好些事情,例如生成一个特殊符号面板,随时复制等等。研究和学习了一个已经快要废弃的标准文件,原因有二:一是对一些不了解的原理的好奇,比如为什么用输入法打出来的数字序号,用括号包含的数字的序号能达到⑴……⒇、用小点儿后缀的数字的序号也能达到⒈……⒛共20个,而①……⑩、㈠……㈩等则只有10个;二是说明了随便找出来3个汉字,确实不能都当作人名,人起名确实有技术含量哈。 |
|
来自: 新用户5228KeDY > 《待分类》