zoukankan      html  css  js  c++  java
  • 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}
    ", 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个字节。

  • 相关阅读:
    内向者生存手册
    不良言论屏蔽方案探讨——附加一点思考
    提高复用性的编码习惯
    如何管好.net的内存
    谨防信息超载
    .net的反对派们,精神比表面的东西更重要
    为什么我老是半途而废?
    对不起,我也是来给.Net泼冷水的(山寨版)
    把重要的事情先做好
    学英语(外语)的一个误区
  • 原文地址:https://www.cnblogs.com/chens2865/p/3873582.html
Copyright © 2011-2022 走看看