亂數產生Unicode中文範圍的中文字元

今天突然有一個需求需要用到這一方面的程式,大概就是產生一個現在Unicode字碼表內的中文字,然後是用亂數的型態產生的,由於之前對於文字的處理僅止於編碼的轉換(例如Big5轉Unicode),對於Unicode亂數後產生回中文字的功能是連碰都沒碰過,於是上網先搜尋一下必要的知識後,就開始寫個Console的程式來驗證。

Unicode中文字碼(CJK Unified Ideographs;中日韓統一表意文字)的範圍落在0x4E00至0x9FFF(UTF-32),但迄今(Unicode v11.0)最末的0x9FF0~0x9FFF這16個字仍是空白。有了這些知識後,要產生出這樣構想的程式碼自然就不是問題了!程式碼如下:

static void Main(string[] args)
{
	//呼叫視窗使用Unicode字串來顯示
	Console.OutputEncoding = System.Text.Encoding.Unicode;
	//產生1000字Unicode中文字
	for (int i = 0; i < 1000; i++)
	{ Console.Write(getRandomUnicode().Substring(0, 1)); }
	Console.Read();
}

//取得一個亂數的Unicode中文字
private static string getRandomUnicode()
{
	//Unicode中文字範圍
	int iMin = Convert.ToInt32("4E00", 16);
	int iMax = Convert.ToInt32("9FFF", 16); //不考慮最末16個空白
	//隨機一個中文字之整數
	System.Random oRnd = new System.Random(System.Guid.NewGuid().GetHashCode());
	int iChar = oRnd.Next(iMin, iMax);
	//整數轉成Byte[],再轉成字串
	return System.Text.Encoding.Unicode.GetString(System.BitConverter.GetBytes(iChar));
}
Unicode 中文 文字 字元 亂數產生