C#读写.TXT,生成后的文件可读可赏,但生成的文件打开过后或手动新建的文件读时乱码,并且字符就显示几个

//byData传进来的字节数组,用以接受FileStream对象Φ的数据,第2个参数是字节数组中开始写入数据的位置,它通常是0,
//表示从数组的开端文件中向数组写数据,最后一个参数规定从文件读多少字符.

(1).使用FileStream类创建文件然后将数据写入到文件里。

//清空缓冲区、关闭流

以上就完成了txt文本文档的数据读取与写入。

}

你对这个回答的评价是

test.txt建议使鼡gb2312的格式保存,或是UTF-8.那么你读取的时候也要相同的编码格式就OK了

你对这个回答的评价是

下载百度知道APP,抢鲜体验

使用百度知道APP立即抢鮮体验。你的手机镜头里或许有别人想知道的答案

}

为了解决这个问题我写了一个類,来取得一个文本文件的encoding这样我们就可以创建对应的

StreamReader和StreamWriter来读写,保证不会出现乱码现象其实原理很简单,文本编辑器(比如XP自带的記事

本)在生成文本文件时如果编码格式和系统默认的编码(中文系统下默认为GB2312)不一致时,会在txt文件开头

部分添加特定的“编码字节序标识(Encoding Bit Order Madk简写为BOM)”,类似PE格式的"MZ"文件头这样

它在读取时就可以根据这个BOM来确定该文本文件生成时所使用的Encoding。这个BOM我们用记事本等程序打开默认

是看不到的但是用stream按字节读取时是可以读到的。我的这个TxtFileEncoding类就是根据这个BOM“文件头”

来确定txt文件生成时用到的编码的

// TODO: 在此處添加构造函数逻辑 /// 取得一个文本文件的编码方式。如果无法在文件头部找到有效的前导符Encoding.Default将被返回。 /// 取得一个文本文件流的编码方式 /// 取得一个文本文件的编码方式。 /// 取得一个文本文件流的编码方式 //保存文件流的前4个字节 //根据文件流的前4个字节判断Encoding
}

我要回帖

更多关于 可读可赏 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信