java随机生成中文名字

汉字区位码:
区码范围:01-09区为682个特殊字符,16~87区为汉字区,包含6763个汉字 。其中16-55区为一级汉字(3755个最常用的汉字,按拼音字母的次序排列),56-87区为二级汉字(3008个汉字,按部首次序排列)。
位码范围:区码为55时,位码范围为1-89;其他区码,位码范围为1-94。

随机生成中文名字

import java.io.UnsupportedEncodingException;

public class ChineseName {
    public static void main(String[] args) {
        ChineseName d = new ChineseName();
        System.out.println(d.getName());//输出随机的中文名字
    }

    //获得汉字名字
    public String getName(){
        String name = "";
        int chineseNameNum = (int)(Math.random()*3 + 2);
        for(int i=1; i<=chineseNameNum;i++){
            name += this.getChinese();
        }
        return name;
    }

    //获得单个汉字
    public String getChinese(){
        String chinese = "";
        int i = (int)(Math.random()*40 + 16);
        int j = (int)(Math.random()*94 + 1);
        if(i == 55){
            j = (int)(Math.random()*89 + 1);
        }
        byte[] bytes = {(byte) (i+160),(byte) (j+160)};
        try {
            chinese =  new String(bytes, "gb2312");
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
        return chinese;
    }
}


将单个汉字转换为区位码:


import java.io.UnsupportedEncodingException;

public class ChineseToCode {
    public static void main(String[] args) {
        ChineseToCode ctc = new ChineseToCode();
        System.out.println(ctc.getCode("王"));
    }

    public String getCode(String chinese){
        byte[] bt = null;
        try {
            bt = chinese.getBytes("gb2312");
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
        String code = "";
        for(int i = 0;i

你可能感兴趣的:(兴致_片段)