手机
当前位置:查字典教程网 >编程开发 >C#教程 >C#中字符串编码处理
C#中字符串编码处理
摘要:GB2312是简体中文系统的标准编码用“区”跟“位”的概念表示称之为区位码区指代大的范围位相当于偏移量。每个汉字占两个字节高位字节”的范围是...

GB2312是简体中文系统的标准编码 用“区” 跟“位”的概念表示 称之为区位码

区指代大的范围 位相当于偏移量。

每个汉字占两个字节

高位字节”的范围是0xB0-0xF7,“低位字节”的范围是0xA1-0xFE。

它的规律好像是按拼音a到z的顺序排列的

“啊”字是GB2312之中的第一个汉字,它的区位码就是1601

为此我们现在用代码的方式输出一个汉字

c#下是little字节序 b0跑后面去了。

复制代码 代码如下:

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 }));

}

}

C#中字符串编码处理1

关于GB2312的解释:http://www.jb51.net/article/34630.htm

ASCII是美国信息交换标准码 他是从0~127,一个字节8位最高是255 就是说一个字节都用不完。

GB2312里也有字母 称之为全角字符 ,gb2312里也包括ascii码称之为半角字符。

全角字符看上去怪怪的 感觉有点不一样 就像这样 全角: A半角:A 全角:a 半角:a

全角字符除了在文字系统里用到没什么实际作用。

全角字符的第一个字节总是被置为163,而第二个字节则是相同半角字符码加上128(不包括空格)。

如半角A为65,则全角A则是163(第一个字节)、193(第二个字节,128+65)。

知道这个规律 那么我们也可以遍历处所有ascii对应的全角字符:

复制代码 代码如下:

/**

*实际上,全角字符的第一个字节总是被置为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));

}

C#中字符串编码处理2

winXp下文本文件默认的保存编码是ansi ,注意 这个ansi 他的概念跟GB2312又有不同,除此之外还有unicode 、utf-8

他们之间的关系是:

不同的国家和地区制定了不同的标准,由此产生了 GB2312, BIG5, JIS 等各自的编码标准。

这些使用 2 个字节来代表一个字符的各种汉字延伸编码方式,称为 ANSI 编码。

在简体中文系统下,ANSI 编码代表 GB2312 编码,在日文操作系统下,ANSI 编码代表 JIS 编码

C#进行文本读取时新同学最容易出现不理解为什么文本文件读取时是乱码

复制代码 代码如下:

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);

【C#中字符串编码处理】相关文章:

C#中事件处理的个人体会

C# Base64编码函数

C#中字符串的加密的源码

C#零基础学习理解委托

C#生成随机字符串的实例

C#中几个未知的Visual Studio编码技巧分享

C# dynamic关键字的使用方法

C#运算符之与,或,异或及移位运算小结

C#中38个常用运算符的优先级的划分和理解

C# 常见操作符整理

精品推荐
分类导航