java 随机生成常用汉字_Java代码实现随机生成汉字的方法

一、背景知识

GB 2312-80 是中国国家标准简体中文字符集,全称《信息交换用汉字编码字符集·基本集》,由中国国家标准总局发布,1981年5月1日实施。GB2312 编码通行于中国大陆;新加坡等地也采用此编码。中国大陆几乎所有的中文系统和国际化的软件都支持 GB 2312。

GB2312 标准共收录 6763 个汉字,其中一级汉字 3755 个,二级汉字 3008 个;同时收录了包括拉丁字母、希腊字母、日文平假名及片假名字母、俄语西里尔字母在内的 682 个字符。GB2312 的出现,基本满足了汉字的计算机处理需要,它所收录的汉字已经覆盖中国大陆 99.75% 的使用频率。对于人名、古汉语等方面出现的罕用字,GB2312 不能处理,这导致了后来 GBK 及 GB18030 汉字字符集的出现。

GB2312 中对所收汉字进行了“分区”处理,每区含有 94 个汉字/符号。这种表示方式也称为区位码。

01 - 09 区为特殊符号。

16 - 55 区为一级汉字,按拼音排序。

56 - 87 区为二级汉字,按部首/笔画排序。

10 - 15 区及 88 - 94 区则未有编码。举例来说,“啊”字是 GB2312 之中的第一个汉字,它的区位码就是 1601。

每个汉字及符号以两个字节来表示。第一个字节称为“高位字节”,第二个字节称为“低位字节”。“高位字节”使用了 0xA1 - 0xF7(把 01 - 87 区的区号加上 0xA0),“低位字节”使用了 0xA1 - 0xFE(把 01 - 94 位的位号加上 0xA0)。 由于一级汉字从 16 区起始,汉字区的“高位字节”的范围是 0xB0 - 0xF7,“低位字节”的范围是 0xA1 - 0xFE,占用的码位是 72 * 94 = 6768。其中有 5 个空位是 D7FA - D7FE。例如“啊”字在大多数程序中,会以两个字节,0xB0(第一个字节)0xA1(第二个字节)储存。(与区位码对比:0xB0 = 0xA0 + 16, 0xA1 = 0xA0 + 1)。

国家标准 GB 18030-2005《信息技术 中文编码字符集》,是中华人民共和国现时最新的内码字集,与 GB 2312-1980 完全兼容,与 GBK 基本兼容,支持 GB 13000 及 Unicode 的全部统一汉字,共收录汉字 70244 个。现行版本为国家质量监督检验总局和中国国家标准化管理委员会于2005年11月8日发布,2006年5月1日实施,为在中国境内所有软件产品支持的强制标准。

二、随机生成常用汉字的 C# 程序

新建Java项目,创建代码片段:

import java.io.UnsupportedEncodingException;

import java.util.Random;

/**

* 随机生成常见的汉字

*

* @author xuliugen

*

*/

public class GeneCharTest {

public static void main(String[] args) {

for (int i = 1; i < 24; i++) {

System.out.print(getRandomChar() + " ");

}

}

private static char getRandomChar() {

String str = "";

int hightPos; //

int lowPos;

Random random = new Random();

hightPos = (176 + Math.abs(random.nextInt(39)));

lowPos = (161 + Math.abs(random.nextInt(93)));

byte[] b = new byte[2];

b[0] = (Integer.valueOf(hightPos)).byteValue();

b[1] = (Integer.valueOf(lowPos)).byteValue();

try {

str = new String(b, "GBK");

} catch (UnsupportedEncodingException e) {

e.printStackTrace();

System.out.println("错误");

}

return str.charAt(0);

}

}

运行结果:

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对脚本之家的支持。如果你想了解更多相关内容请查看下面相关链接

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简单的随机生成中文男性姓名的Java代码: ```java import java.util.Random; public class ChineseNameGenerator { private static final String[] SURNAME_LIST = {"张", "王", "李", "赵", "陈", "刘", "周", "吴", "郑", "孙", "马", "朱", "胡", "林", "徐", "何", "罗", "高", "郭", "梁", "宋", "许", "韩", "冯", "邓", "曹", "彭", "曾", "肖", "田", "董", "袁", "潘", "于", "蒋", "蔡", "余", "杜", "叶", "程", "苏", "魏", "吕", "丁", "任", "卢", "姚", "沈", "钟", "姜", "谢", "邹", "喻", "柏", "水", "窦", "章", "云", "苗", "秦", "尤", "许", "何", "吕", "施", "桂", "聂", "焦", "向", "戚", "岳", "邢", "饶", "蒲", "阮", "童", "颜", "柳", "鲁", "孟", "牛", "温"}; private static final String[] NAME_LIST = {"磊", "强", "军", "勇", "杰", "涛", "明", "辉", "鹏", "斌", "峰", "飞", "宇", "鑫", "波", "浩", "洋", "博", "健", "龙", "敏", "震", "生", "晨", "昊", "凯", "伟", "忠", "宏", "兵", "成", "康", "建", "延", "锋", "威", "旭", "翔", "瑞", "琪", "远", "炎", "超", "梓", "宪", "卓", "子", "嘉", "伦", "海", "帆", "峻", "胜", "楠", "炫", "昆", "志", "聪", "佳", "轩", "毅", "恒", "苑", "杨", "育", "崇", "乐", "德", "彦", "潇", "钧", "维", "升", "煜", "欣", "鸿", "昌"}; public static String generateName() { Random random = new Random(); // 随机生成一个姓氏 String surname = SURNAME_LIST[random.nextInt(SURNAME_LIST.length)]; // 随机生成一个名字 String name = NAME_LIST[random.nextInt(NAME_LIST.length)]; // 拼接成完整的姓名 return surname + name; } public static void main(String[] args) { // 测试代码生成10个随机姓名 for (int i = 0; i < 10; i++) { String name = generateName(); System.out.println(name); } } } ``` 这个代码中,我们先定义了一个姓氏列表和一个名字列表,然后通过 `Random` 类生成随机数来随机选择一个姓氏和一个名字,最后将它们拼接起来得到完整的姓名。你可以根据自己的需求扩展这个代码,比如增加更多的姓氏和名字,或者根据需要生成女性姓名等等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值