C# IO操作(三)文件编码

    在.net环境下新建一个文本文件(所谓文本文件就是直接可以用记事本打开的文件,直接保存字符串)和在系统中新建一个文本文件的编码是不一样的,.net默认采用UTF-8,而中文操作系统采用的是ANSI。如果在.net环境下直接读取由系统新建的文本文件,由于编码不一致,读取时就乱码了,下面来说一下,乱码的解决方法:

1            //手动创建一个编码对象
2             Encoding cod = Encoding.GetEncoding("gb2312");  //此时获取到的就是gb2312编码。
3             Encoding codGBK = Encoding.GetEncoding("GBK");  //此时获取到的就是GBK编码。

解决中文读取乱码的问题,就是保证写入时使用什么编码,读取该文件使用相同的编码即可。

下面看一下,系统中所有的编码:

1             //将所有编码写入文本文件
2             string fileName = "encodings.txt";
3             EncodingInfo[] eInfo = Encoding.GetEncodings();
4             foreach (var item in eInfo)
5             {
6                 File.AppendAllText(fileName, string.Format("{0}--{1}--{2}\r\n", item.CodePage, item.Name, item.DisplayName));
7             }
8             Console.WriteLine("OK");

 GB2312编码:兼容ASCII码表,英文字符用1个字节表示(字节用正数来表示),中文用2个字节表示(字节用负数来表示)。
 GBK编码:兼容GB2312编码。中文用2个字节表示(第1个字节用负数,第2个字节用紧跟其后的正数)。
 Unicode:国际码表,中英文都占2个字节。
 UTF-8:国际码表,英文占1个字节,中文占3个字节。

posted on 2014-07-28 17:16  chens2865  阅读(473)  评论(0编辑  收藏  举报

导航