日期:2014-05-19  浏览次数:20945 次

关于文件编码的问题.
一个文件(.txt/.htm),保存时的编码是ASCII格式,但是在C#中用
StramReader   sr   =   new   StreamReader(fileLocation,   Encoding.ASCII);
sr.ReadToEnd()取出来的data却是乱码,如果用Encoding.Default,就显示正常.我看过了Encoding.Default是 "ISO-8859-1 "类型,为什么保存时是用的ASCII,却要用ISO-88598-1去打开才能显示正常呢?

------解决方案--------------------
ASCII编码是做为英文的字母及符号的编码方式,字符编码为单个的 7 位 ASCII 字符。此编码仅支持 U+0000 和 U+007F 之间的字符值。
保存时汉字转换的字节成为单字节,读取时汉字对应的双字节编码不全(识别为 U+0000 和 U+007F 之间的字符值),因而是乱码.
如果你用ASCII编码来写文件,那么就存在这个问题,除了统一编码为Unicode或UTF-8没有办法



*****************************************************************************
欢迎使用CSDN论坛专用阅读器 : CSDN Reader(附全部源代码)

http://www.cnblogs.com/feiyun0112/archive/2006/09/20/509783.html
------解决方案--------------------
这个是代码,你运行后打开文本文件看看是什么吧.
using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
namespace consolepro
{
public class MyClass
{
public static void Main()
{
FileStream fs = new FileStream( "C:\\myfile.txt ", FileMode.Create);

StreamWriter writer = new StreamWriter(fs, Encoding.ASCII);
writer.WriteLine( "什么 ");
writer.Close();
fs.Close();
FileStream fa = new FileStream( "C:\\myfile.txt ", FileMode.Open);
StreamReader reader = new StreamReader(fa,Encoding.ASCII);
string temp = reader.ReadToEnd();
reader.Close();
Console.WriteLine(temp);
fs.Close();
Console.ReadKey();
}
}
}