• 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个字节。

  • 相关阅读:
    面试基础知识文档
    敏捷式开发
    redis总结
    自我介绍的问题
    面试2
    唐巧的iOS技术博客选摘
    IOS开发中滑动页面时NSTimer停止的问题
    iOS多线程GCD(转)
    iOS 用instancetype代替id作返回类型有什么好处?
    C语言中全局变量、局部变量、静态全局变量、静态局部变量的区别 (转)
  • 原文地址:https://www.cnblogs.com/chens2865/p/3873582.html
Copyright © 2020-2023  润新知