C#中字符串编码处理
GB2312是简体中文系统的标准编码 用“区” 跟“位”的概念表示 称之为区位码 复制代码 代码如下: ushort u = 0xa1b0; byte[] chs =BitConverter.GetBytes(u); Console.Write(Encoding.GetEncoding("GB2312").GetString(chs)); 屏幕上输出的是汉字“啊” 但是注意并不代表 写个循环从0xbA1 到0xf7fe就可以输出所有的汉字,这个很简单比如高位从1到9 低位从1到9 只有81种组合。 并不代表99-11就是结果 这么二的问题 晕。实际上通过这种方式汉字的个数总共是6768个,理解了区位码的概念后你就知道怎样去处理gb2312的汉字编码了。 下面我们就用这种方式来输出所有的汉字 复制代码 代码如下: //gb2312 //B0-F7,低字节从A1-FE //byte hi = 0xB0; //byte lo = 0xA1; for (byte i = 0xB0; i <= 0xF7; i++) { for (byte j = 0xA1; j <= 0xFE; j++) { //byte t = (byte)(j | (byte)0x01); Console.Write(Encoding.GetEncoding("GB2312").GetString(new byte[] { i,j })); } } 关于GB2312的解释:https://www.oudahe.com/p/22422/ ASCII是美国信息交换标准码 他是从0~127,一个字节8位最高是255 就是说一个字节都用不完。 复制代码 代码如下: /** *实际上,全角字符的第一个字节总是被置为163, *而第二个字节则是相同半角字符码加上128(不包括空格)。 *如半角A为65,则全角A则是163(第一个字节)、193(第二个字节,128+65)。 */ for (byte k = 0x00; k < 0x7f; k++) { byte[] ch = new byte[2]; ch[0] = 163; ch[1] = (byte)(128 + k); Console.Write(Encoding.GetEncoding("GB2312").GetString(ch)); } winXp下文本文件默认的保存编码是ansi ,注意 这个ansi 他的概念跟GB2312又有不同,除此之外还有unicode 、utf-8 复制代码 代码如下: StreamReader sr = new StreamReader(Application.StartupPath + @"config.txt"); string line; while ((line = sr.ReadLine()) != null) { Console.WriteLine(line); } 因为读取的方式 也就是解码的方式跟文本存储时不一样,所以初始化streamReader时最好指定编码,Default即ANSI 复制代码 代码如下: StreamReader sr = new StreamReader(Application.StartupPath + @"config.txt",System.Text.Encoding.Default); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |