我正在使用StreamReader读取文件,并使用StreamWriter将确切的行写入另一个文件。但问题是,在生成的文件中,任何出现的字符“|”都会转换为“?”。
这是初始化我的流的代码:
using (var readFile = new FileStream(path, FileMode.Open, FileAccess.Read))
{
using (var writeFile = new FileStream(@"Modified\" + Path.GetFileName(path), FileMode.Create, FileAccess.Write))
{
using (var sr = new StreamReader(readFile, new ASCIIEncoding()))
{
using (var sw = new StreamWriter(writeFile, new ASCIIEncoding()))
{
//Read line and write it to the writer
}
}
}
}
这可能是流的问题还是更可能是原始文件的问题?原始文件本身在多个文本编辑器中显示得很好,所以看起来是正确的。
答案 0 :(得分:3)
|不是有效的ASCII字符,所以我假设原始文件不是ASCII编码的。将编码类型更改为UTF可以解决问题,但很难知道这是否符合您的要求。
using (var sr = new StreamReader(readFile, new UTF8Encoding()))
{
using (var sw = new StreamWriter(writeFile, new UTF8Encoding()))
请参阅http://www.asciitable.com/ fpr有效的ascii字符列表。
答案 1 :(得分:0)
使用Encoding.Default而不是ASCIIEncoding来解决此问题。