字符编码及在.net平台的使用

字符编码及在.net平台的使用

ID:6039830

大小:187.04 KB

页数:8页

时间:2017-12-31

字符编码及在.net平台的使用_第1页
字符编码及在.net平台的使用_第2页
字符编码及在.net平台的使用_第3页
字符编码及在.net平台的使用_第4页
字符编码及在.net平台的使用_第5页
资源描述:

《字符编码及在.net平台的使用》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、引:金旭亮csdn博客http://blog.csdn.net/bitfan漫谈.NET开发中的字符串编码 说明:         在《 .NET4.0面向对象编程漫谈 》基础篇《 13.2.1 序列化与流》中,向大家介绍了如何向流中序列化一个对象。         本篇扩充阅读将向读者介绍将字符串对象的序列化,这里面的关键是字符串应该如何编码和解码为二进制数值,从而可以把它们保存到文件流(FileStream)中,或者通过网络流( NetworkStream)将它们远程发送到另一台计算机上。抱怨一下:    使用CSDN的在线编辑器写文章是一个让人望而生畏的工作,当提交文档时,CSDNW

2、eb服务器经常报告“内部错误”,所以文章排版不好,诸位见谅。博客园的系统稳定些,读者可以访问http://www.cnblogs.com/bitfan/archive/2010/11/25/1887590.html 看到排版好一点的同样文章。 ==============================================================      1 引子         在实际开发中,经常需要将一些字符串写入到文本文件中,或者从文本文件中读入字符串,在 .NET应用程序中,通常使用 StreamReader或 StreamWriter两个类完成这一工作,比如

3、以下代码将 fileContent字串写入到 FileName文件中:static   void  WriteFileUseStreamWriter(String fileContent, String FileName){  using  (StreamWriter writer  =   new  StreamWriter(FileName))  {    writer.Write(fileContent);  }}如果你使用 .NET基类库中相关类(比如 StreamReader或下面用到的 File类)去读取这个文件,你会发现一切如你所愿地正常运转:WriteFileUseStre

4、amWriter( " 中国ab " ,  " test.txt " );Console.WriteLine(File.ReadAllText( " test.txt " ));      // 输出:“中国ab”             由于多数情况下我们都工作在中文 Windows下,而且往往都是某个 .NET程序写,另一个 .NET程序读,所以,不少 .NET程序员可能都没注意到这其中其实存在着一个字符编码的问题,在特定的场合下,这一问题会给我们带来麻烦。         请看图 1:  图1 记事本支持的编码方式         默认情况下, Windows记事本以 ANSI编码方

5、式保存文件。如图 1所示,如果文本内容为“中国 ab ” ,记事本将其以 ASNI方式保存为“ test.txt”,则以下代码将“罢工”了(参看图 2):Console.WriteLine(File.ReadAllText( " test.txt " ));         图2 汉字将显示为乱码         如 图 2 所示, File.ReadAllText方法打开“ test.txt”文件时,会发现英文字符可以正常显示,但中文将显示为乱码。2 了解字符的编码         我们可以做个试验,使用记事本将“中国 ab”这个中英混杂的字符串以不同编码方式保存为多个“ .txt”文件

6、,然后直接查看其二进制内容: 图3   比对字符编码          图 3 展示了“中国 ab”按四种编码方式( ANSI、 UTF8、 Unicode、 UnicodeBigEndian )得到的不同二进制数据。         以英文字符“ a”为例, ANSI和 UTF8得到的数值都是“ 61”,但 Unicode将它扩充为 2个字节 16位的二进制(“ 6100”和“ 0061”),所以我们又将这种编码方式称为 UTF-16。        UTF-16 又可以细分为 2种编码方式: BigEndian方式与 Little_Edian方式,这两者的唯一区别在于字节排列顺序刚好相

7、反, Little_Edian方式将“ a”编码为“ 6100”,而 BigEndian方式则编码为“ 0061”。         现在看看中文字符,“中国”两个汉字, ANSI编码为“ D6D0B9FA”, 4个字节,一个汉字占两个字节,而 UTF8则编码为“ E4B8ADE59BBD”, 6个字节,一个汉字占 3个字节!这说明 UTF8是一种“变长”的编码,可能使用 1~4个字节来表示某个字符。         另

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。