汉字主要分成三个区域

区段 说明 备注
01-09 区分为特殊字符  682个
16-55 一级汉字,按拼音排序 55区最胡5位为空  3755个
56-87 二级汉字,按部首/笔画排序  3008个

 

 

 

 

 

备注:10-15区,88-94区未编码

基础知识

 一个汉字有两个字节,16位,前8位为高位字节,后8位为低为字节     因此一个汉字由  (高高高高0xa0低低低低0xa0)组成

代码演示

  1. 获取所有特殊字符,共682个     
  /// <summary>
        /// 查找所有特殊字符
        /// </summary>
        /// <returns></returns>
        static string GetSpecialStr()
        {
            var list = new List<byte>();
            //特殊字符区号为1-9
            for(int area=1;area<=9;area++)
            {
                for (int site = 1; site <=94; site++)
                {
                    list.Add((byte)(area+0xa0));
                    list.Add((byte)(site+0xa0));
                }
            }
            string result= Encoding.GetEncoding("GB2312").GetString(list.ToArray());
            return result;
        }

        2.取一级字,按拼音排序,一级字为常用字

 

 /// <summary>
        /// 取得一级所有字符(一级字中多为常用字)
        /// </summary>
        /// <returns></returns>
        static string GetOneLevel()
        {
            var list = new List<byte>();
            //16-55区为一级汉字,55区的88-94为空位,未编码
            for (int area = 16; area <= 55; area++)
            {
                for (int site = 1, siteEnd = (area == 55 ? 88 : 94); site < siteEnd; site++)
                {
                    list.Add((byte)(area+160));
                    list.Add((byte)(site+160));
                }
            }
            string result = Encoding.GetEncoding("GB2312").GetString(list.ToArray());
            return result;
        }

 3.获取二级文字

/// <summary>
        /// 取得二级所有字符(二级汉字大多为生僻字)
        /// </summary>
        /// <returns></returns>
        static string GetTwoLevel()
        {
            var list = new List<byte>();
            //56-87区为二级汉字
            for (int area = 56; area <= 87; area++)
            {
                for (int site = 1; site <= 94; site++)
                {
                    list.Add((byte)(area + 0xA0));
                    list.Add((byte)(site + 0xA0));
                }
            }
            string result = Encoding.GetEncoding("GB2312").GetString(list.ToArray());
            return result;
        }