C#读取文本文件时List集合出现双反斜杠异常问题
解决List中出现双反斜杠的问题
首先要明确:控制台和调试放大镜显示正常,说明实际读取到的字符串本身并没有双反斜杠——你在调试器里查看List元素时看到的双反斜杠,只是VS调试器为了转义显示的格式,并非字符串真实内容。可以通过以下方式验证:
- 把List中的元素写入新文件,打开查看实际内容
- 在代码里执行
Console.WriteLine(string.Join("\n", data)),看输出是否正常
如果验证后发现实际字符串真的带有双反斜杠,那大概率是大型机文本文件的编码问题。大型机常用EBCDIC编码,而StreamReader默认用UTF-8读取,编码不匹配会导致字符转义异常。解决方法是指定正确的编码:
// 替换为大型机对应的编码,比如IBM037是常见的EBCDIC编码 using (StreamReader file = new StreamReader(textFile, Encoding.GetEncoding("IBM037"))) { string ln; while ((ln = file.ReadLine()) != null) { Console.WriteLine(ln); data.Add(ln); } // using块会自动关闭文件,无需手动调用file.Close() }
另外补充:你的代码里file.Close()是多余的,using语句会自动释放StreamReader资源并关闭文件,删掉即可。
内容的提问来源于stack exchange,提问作者MikeG
相关产品推荐
相关产品推荐

