汉字主要分成三个区域
区段 | 说明 | 备注 |
01-09 | 区分为特殊字符 | 682个 |
16-55 | 一级汉字,按拼音排序 | 55区最胡5位为空 3755个 |
56-87 | 二级汉字,按部首/笔画排序 | 3008个 |
备注:10-15区,88-94区未编码
基础知识
一个汉字有两个字节,16位,前8位为高位字节,后8位为低为字节 因此一个汉字由 (高高高高0xa0低低低低0xa0)组成
代码演示
- 获取所有特殊字符,共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; }