快速业务通道

如何随机生成指定数目的国标汉字

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-04-11

为了使每一个汉字有一个全国统一的代码,1980年,我国颁布了第一个汉字编码的国家标准: GB2312-80《信息交换用汉字编码字符集》基本集,这个字符集是我国中文信息处理技术的发展基础,也是目前国内所有汉字系统的统一标准。由于国标码是四位十六进制,为了便于交流,大家常用的是四位十进制的区位码。所有的国标汉字与符号组成一个94×94的矩阵。在此方阵中,每一行称为一个"区",每一列称为一个"位",因此,这个方阵实际上组成了一个有94个区(区号分别为0 1到94)、每个区内有94个位(位号分别为01到94)的汉字字符集。一个汉字所在的区号和位号简单地组合在一起就构成了该汉字的"区位码"。在汉字的区位码中,高两位为区号,低两位为位号。 在区位码中,01-09区为682个特殊字符,16~87区为汉字区,包含6763个汉字。其中16-55区为一级汉字(3755个最常用的汉字,按拼音字母的次序排列),56-87区为二级汉字(3008个汉字,按部首次序排列)。

所以,当我们需要n个任意汉字时,我们不必建一个全部汉字表,而是利用区位码实现常用汉字的提取。

下面的代码可以实现任意数目汉字的生成:

  1. /// <summary> 
  2. /// 此函数为生成指定数目的汉字 
  3. /// </summary> 
  4. /// <param name="charLen">汉字数目</param> 
  5. /// <returns>所有汉字</returns> 
  6. public static string[] CreateGBChar(int charLen) 
  7.     int area,code;//汉字由区位和码位组成(都为0-94,其中区位16-55为一级汉字区,56-87为二级汉字区,1-9为特殊字符区) 
  8.     string[] charArrary = new string[charLen]; 
  9.     Random rand = new Random(); 
  10.     for (int i = 0; i < charLen; i++) 
  11.     { 
  12.         area = rand.Next(16, 88); 
  13.         if (area == 55)//第55区只有89个字符 
  14.         { 
  15.             code = rand.Next(1, 90); 
  16.         } 
  17.         else 
  18.         { 
  19.             code = rand.Next(1, 94); 
  20.         } 
  21.         charArrary[i] = Encoding.GetEncoding("GB2312").GetString(new byte[] { Convert.ToByte(area+160), Convert.ToByte(code+160) }); 
  22.     } 
  23.     return charArrary; 

下面代码是解析汉字的区位码:

  1. //// <summary> 
  2. /// 获取汉字的区位码 
  3. /// </summary> 

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号