1 /// 2 /// 随机中文码 3 /// 4 /// 5 private string GetRndCh() 6 { 7 System.Text.Encoding gb = System.Text.Encoding.Default;//获取GB2312编码页(表) 8 object[] bytes = CreateRegionCode(4);//调用函数产生4个随机中文汉字编码 9 string[] str = new string[4]; 10 System.Text.StringBuilder sb = new System.Text.StringBuilder(); 11 for (int i = 0; i < 4; i++) 12 { 13 //根据汉字编码的字节数组解码出中文汉字 14 str[i] = gb.GetString((byte[])Convert.ChangeType(bytes[i], typeof(byte[]))); 15 sb.Append( str[i].ToString()); 16 } 17 return sb.ToString (); 18 } 19 20 21 /// 22 /// 产生随机中文汉字编码 23 /// 24 /// 25 /// 26 private static object[] CreateRegionCode(int strlength) 27 { 28 //定义一个字符串数组储存汉字编码的组成元素 29 string[] rBase = new String[16] { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f" }; 30 Random rnd = new Random(); 31 object[] bytes = new object[strlength]; 32 33 for (int i = 0; i < strlength; i++) 34 { 35 //区位码第1位 36 int r1 = rnd.Next(11, 14); 37 string str_r1 = rBase[r1].Trim(); 38 39 //区位码第2位 40 rnd = new Random(r1 * unchecked((int)DateTime.Now.Ticks) + i); 41 int r2; 42 if (r1 == 13) 43 { 44 r2 = rnd.Next(0, 7); 45 } 46 else 47 { 48 r2 = rnd.Next(0, 16); 49 } 50 string str_r2 = rBase[r2].Trim(); 51 52 //区位码第3位 53 rnd = new Random(r2 * unchecked((int)DateTime.Now.Ticks) + i);//更换随机种子 54 int r3 = rnd.Next(10, 16); 55 string str_r3 = rBase[r3].Trim(); 56 57 //区位码第4位 58 rnd = new Random(r3 * unchecked((int)DateTime.Now.Ticks) + i); 59 int r4; 60 if (r3 == 10) 61 { 62 r4 = rnd.Next(1, 16); 63 } 64 else if (r3 == 15) 65 { 66 r4 = rnd.Next(0, 15); 67 } 68 else 69 { 70 r4 = rnd.Next(0, 16); 71 } 72 string str_r4 = rBase[r4].Trim(); 73 74 //定义两个字节变量存储产生的随机汉字区位码 75 byte byte1 = Convert.ToByte(str_r1 + str_r2, 16); 76 byte byte2 = Convert.ToByte(str_r3 + str_r4, 16); 77 78 //将两个字节变量存储在字节数组中 79 byte[] str_r = new byte[] { byte1, byte2 }; 80 81 //将产生的一个汉字的字节数组放入object数组中 82 bytes.SetValue(str_r, i); 83 } 84 return bytes; 85 }