源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

C#中字符串编码处理

  • 时间:2022-07-14 08:55 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:C#中字符串编码处理
GB2312是简体中文系统的标准编码 用“区” 跟“位”的概念表示 称之为区位码 区指代大的范围 位相当于偏移量。 每个汉字占两个字节 高位字节”的范围是0xB0-0xF7,“低位字节”的范围是0xA1-0xFE。 它的规律好像是按拼音a到z的顺序排列的 “啊”字是GB2312之中的第一个汉字,它的区位码就是1601 为此我们现在用代码的方式输出一个汉字 c#下是little字节序 b0跑后面去了。
[url=http://www.1sucai.cn/article/34630.htm]http://www.1sucai.cn/article/34630.htm[/url] ASCII是美国信息交换标准码 他是从0~127,一个字节8位最高是255 就是说一个字节都用不完。 GB2312里也有字母 称之为全角字符  ,gb2312里也包括ascii码称之为半角字符。 全角字符看上去怪怪的 感觉有点不一样 就像这样 全角: A半角:A  全角:a 半角:a 全角字符除了在文字系统里用到没什么实际作用。 全角字符的第一个字节总是被置为163,而第二个字节则是相同半角字符码加上128(不包括空格)。 如半角A为65,则全角A则是163(第一个字节)、193(第二个字节,128+65)。 知道这个规律 那么我们也可以遍历处所有ascii对应的全角字符:
[u]复制代码[/u] 代码如下:
/**   *实际上,全角字符的第一个字节总是被置为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));  }
[img]http://files.jb51.net/file_images/article/201303/201338150005697.jpg[/img] winXp下文本文件默认的保存编码是ansi ,注意 这个ansi 他的概念跟GB2312又有不同,除此之外还有unicode 、utf-8 他们之间的关系是: 不同的国家和地区制定了不同的标准,由此产生了 GB2312, BIG5, JIS 等各自的编码标准。 这些使用 2 个字节来代表一个字符的各种汉字延伸编码方式,称为 ANSI 编码。 在简体中文系统下,ANSI 编码代表 GB2312 编码,在日文操作系统下,ANSI 编码代表 JIS 编码 C#进行文本读取时新同学最容易出现不理解为什么文本文件读取时是乱码
[u]复制代码[/u] 代码如下:
 StreamReader sr = new StreamReader(Application.StartupPath + @"\config.txt");  string line;  while ((line = sr.ReadLine()) != null)  {      Console.WriteLine(line);  }
因为读取的方式 也就是解码的方式跟文本存储时不一样,所以初始化streamReader时最好指定编码,Default即ANSI
[u]复制代码[/u] 代码如下:
 StreamReader sr = new StreamReader(Application.StartupPath + @"\config.txt", System.Text.Encoding.Default);
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部