Method One:
public static char getRandomChar() {
return (char) (0x4e00 + (int) (Math.random() * (0x9fa5 - 0x4e00 + 1)));
}
Method Two: Uncommon Chinese characters
public static void main(String[] args) {
RandomHan han = new RandomHan();
System.out.println(han.getRandomHan());
}
}
class RandomHan {
private Random ran=new Random();
private final static int delta=0x9fa5-0x4e00+1;
public char getRandomHan() {
return (char) (0x4e00 + ran.nextInt(delta));
}
Method three, too troublesome
Random random = new Random();///Random number
String[] rBase = {"0", "1", "2", "3", "4", "5", "6", "7", "8","9", "a", "b", "c", "d", "e", "f" };
// Generate the first area code
int r1 = random.nextInt(3) + 11; //Generate a random number between 11 and 14
String str_r1 = rBase[r1];
// Generate the second area code
int r2;
if (r1 == 13) {
r2 = random.nextInt(7); //Generate a random number between 0 and 7
} else {
r2 = random.nextInt(16); //Generate a random number between 0 and 16
}
String str_r2 = rBase[r2];
// Generate the first bit code
int r3 = random.nextInt(6) + 10; //Generate a random number between 10 and 16
String str_r3 = rBase[r3];
// Generate the second bit code
int r4;
if (r3 == 10) {
r4 = random.nextInt(15) + 1; //Generate a random number between 1 and 16
} else if (r3 == 15) {
r4 = random.nextInt(15); //Generate a random number between 0 and 15
} else {
r4 = random.nextInt(16); //Generate a random number between 0 and 16
}
String str_r4 = rBase[r4];
System.out.println(str_r1 + str_r2 + str_r3 + str_r4);
// Convert the generated internal code to Chinese characters
byte[] bytes = new byte[2];
//Save the generated area code to the first element of the byte array
String str_r12 = str_r1 + str_r2;
int tempLow = Integer.parseInt(str_r12, 16);
bytes[0] = (byte) tempLow;
//Save the generated bitcode to the second element of the byte array
String str_r34 = str_r3 + str_r4;
int tempHigh = Integer.parseInt(str_r34, 16);
bytes[1] = (byte) tempHigh;
String ctmp = new String(bytes,"gb2312"); //Generate Chinese characters according to the byte array
System.out.println("Generate Chinese characters:" + ctmp);
/**
Chinese to Pinyin
jpinyin download
jpinyin
JPinyin is a Java open source class library for converting Chinese characters to Pinyin. It has made some improvements based on the functions of PinYin4j.
【Main features of JPinyin】
1. Accurate and perfect character library;
Unicode encoding is from 20903 Chinese characters in the range of 4E00-9FA5 and 3007(〇),
JPinyin can convert all Chinese characters except 46 variant characters (the variant characters do not have standard pinyin);
2. The pinyin conversion speed is fast;
After testing, converting Unicode codes from 20902 Chinese characters in the range of 4E00-9FA5, JPinyin took about 100 milliseconds.
3. Multi-pinyin format output support;
JPinyin supports a variety of Pinyin output formats: with phonetic symbols, without phonetic symbols, digital phonetic symbols and pinyin first letter output formats;
4. Common multi-sound character recognition;
JPinyin supports the recognition of common polyphonic characters, including phrases, idioms, and place names;
5. Simplified and Traditional Chinese conversion
*/
example:
import java.io.UnsupportedEncodingException;
import java.util.Random;
import opensource.jpinyin.ChineseHelper;
import opensource.jpinyin.PinyinFormat;
import opensource.jpinyin.PinyinHelper;
public class TestChineseCode {
public static void main(String[] args) {
// TODO Auto-generated method stub
try {
for(int i=0;i<10;i++){
System.out.print("No.:"+(i+1)+" words:");
CreatChineseCode();
}
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void CreatChineseCode() throws UnsupportedEncodingException{
Random random = new Random();
String[] rBase = {"0", "1", "2", "3", "4", "5", "6", "7", "8",
"9", "a", "b", "c", "d", "e", "f" };
// Generate the first area code
int r1 = random.nextInt(3) + 11; //Generate a random number between 11 and 14
String str_r1 = rBase[r1];
// Generate the second area code
int r2;
if (r1 == 13) {
r2 = random.nextInt(7); //Generate a random number between 0 and 7
} else {
r2 = random.nextInt(16); //Generate a random number between 0 and 16
}
String str_r2 = rBase[r2];
// Generate the first bit code
int r3 = random.nextInt(6) + 10; //Generate a random number between 10 and 16
String str_r3 = rBase[r3];
// Generate the second bit code
int r4;
if (r3 == 10) {
r4 = random.nextInt(15) + 1; //Generate a random number between 1 and 16
} else if (r3 == 15) {
r4 = random.nextInt(15); //Generate a random number between 0 and 15
} else {
r4 = random.nextInt(16); //Generate a random number between 0 and 16
}
String str_r4 = rBase[r4];
System.out.println("area code+bit code="+str_r1 + str_r2 + str_r3 + str_r4);
// Convert the generated internal code to Chinese characters
byte[] bytes = new byte[2];
//Save the generated area code to the first element of the byte array
String str_r12 = str_r1 + str_r2;
int tempLow = Integer.parseInt(str_r12, 16);
bytes[0] = (byte) tempLow;
//Save the generated bitcode to the second element of the byte array
String str_r34 = str_r3 + str_r4;
int tempHigh = Integer.parseInt(str_r34, 16);
bytes[1] = (byte) tempHigh;
String ctmp = new String(bytes,"gb2312"); //Generate Chinese characters according to the byte array
System.out.println("Generate Chinese characters:" + ctmp);
//String s="China's capital is Beijing";
String s="";
s=ctmp;
char [] c=ctmp.toCharArray();
//With phonetic transcription zhōng,guó,de,shǒu,dū,shì,běi,jīng
System.out.println(PinyinHelper.convertToPinyinString(s,",",PinyinFormat.WITH_TONE_MARK));
//Replace the phonetic symbols with numbers zhong1,guo2,de5,shou3,du1,shi4,bei3,jing1
System.out.println(PinyinHelper.convertToPinyinString(s,",",PinyinFormat.WITH_TONE_NUMBER));
//Without phonetic symbols zhong,guo,de,shou,du,shi,bei,jing
System.out.println(PinyinHelper.convertToPinyinString(s, ",", PinyinFormat.WITHOUT_TONE));
System.out.println( PinyinHelper.getShortPinyin(s));//Output the first letter of Pinyin zgdsdsbj
//System.out.println("Whether it is polyphonic: "+PinyinHelper.hasMultiPinyin(‘好‘));//judgment of polyphonic true
//Judgment true polyphonic
System.out.println("Is it polyphonic: "+(PinyinHelper.hasMultiPinyin(c[0])==false? "Not":"Yes"));
//System.out.println(ChineseHelper.convertToSimplifiedChinese("东"));//Traditional Chinese to Simplified Chinese
//System.out.println( ChineseHelper.convertToTraditionalChinese("东"));//Simplified to traditional Chinese
//System.out.println(ChineseHelper.isTraditionalChinese(‘哈‘));//Determine whether it is traditional characters false
System.out.println("Whether it is a traditional Chinese character:"+((ChineseHelper.isTraditionalChinese(c[0])==false)? "Not":"Yes"));//Determine whether it is a traditional Chinese character false
}
}
Java generates random Chinese characters