java 常用汉字_中国常用汉字有多少

有人说中国常用字是3500左右。嗯,一个软盘好像就能存10万字,那么我们用java是不是能获取所有的常用的字?

应用开发时,很多同学都处理过中文乱码的问题吧,怎么解决的,是不是ISO-8859-1或UTF-8之类的编码互相转。

有java与字符串编码编程经验,我们不难想到是否可以从一个字符集找出所有的中文字符,不就是所有的中文字么,那我们就来取下较少的也差不多是常用的字符集"GB2312"。

//https://blog.csdn.net/gtkknd/article/details/80593886

/*在GB2312编码的实际应用中,有时会用到区位码的概念。GB2312编码对所收录字符进行了"分区"处理,共94个区,每个区含有94个位,共8836个码位.

而区位码实际是GB2312编码的内部形式,它规定对收录的每个字符采用两个字节表示,

第一个字节为"高字节",对应94个区;第二个字节为"低字节",对应94个位。所以它的区位码范围是:0101-9494.

为兼容ASCII码,区号和位号分别加上0xA0偏移就得到GB2312编码。在区位码上加上0xA0偏移,

可求得GB2312编码范围:0xA1A1-0xFEFE,其中汉字的编码范围为0xB0A1-0xF7FE,第一字节0xB0-0xF7

(对应区号:16-87),第二个字节0xA1-0xFE(对应位号:01-94).

*/

PrintWriter pw=new PrintWriter(new OutputStreamWriter(new FileOutputStream("/Users/chengzhong/work/yimilan_work/label/chars.txt"),"UTF-8"));

int n=0;

//区长度

for(int i=Integer.parseInt("B0",16);i<=Integer.parseInt("F7",16);i++) {

//位长度

for(int j=Integer.parseInt("A1",16);j<=Integer.parseInt("FE",16);j++) {

byte[] tmp=new byte[2];

tmp[0]=(byte)i;

tmp[1]=(byte)j;

n++;

String word=new String(tmp,"GB2312");

System.out.println(word);

pw.println(word);

String locArea=String.valueOf(Integer.toHexString(i)+Integer.toHexString(j));

try {

charService.insertWord(locArea,word,Integer.toHexString(word.charAt(0)));

}catch(Exception e) {

log.error(e.getMessage(),e);

}

}

}

System.out.println("总字数:"+n);

pw.close();通过上面这段代码,我得到了6千多个汉字,这差不多覆盖常用汉字了。

评论:

1f830ea403b96cb786d6a7e8bdd707a5.png

提交

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值