如何在不丢失奇数字符的情况下阅读文本文件?

时间:2009-11-26 17:29:30

标签: .net vb.net file text encoding

我想使用System.IO.File.ReadAllLines将文本文件读入字符串数组。但是,ReadAllLines会删除我想要保留的文件中的一些奇怪字符,例如chr(187)。我尝试了一些不同的编码选项,但这没有帮助,我没有看到“无编码”的选项。

我可以使用FileOpen和LineInput来不经修改地读取文​​件,但这有点慢。使用FileSystemObject也可以正常工作,但我宁愿不使用它。

在.net中将文本文件读入字符串数组而不进行修改的最佳方法是什么?

3 个答案:

答案 0 :(得分:6)

没有“无编码”这样的概念。您必须找出正确的编码,否则您无法正确解释数据。

当你说“chr(187)”时,你的意思是什么Unicode字符?

您可能想尝试的一些编码:

  • Encoding.Default - 系统默认编码
  • Encoding.GetEncoding(28591) - ISO-Latin-1
  • Encoding.UTF8 - 在现代文件中非常常见

答案 1 :(得分:2)

听起来你想要读取原始字节。

使用File.ReadAllBytes将它们读入数组(不要对大文件执行此操作),或使用FileStream一次读取大块字节。

答案 2 :(得分:0)

被剥离的字符位于文件的开头。事实证明它们是UTF-8的字节顺序标记。 File.ReadAllLines和File.ReadAllText删除了字节顺序标记,而LineInput和FileSystemObject函数则没有。

如果我在问题中解释了奇怪的字符在文件的开头,我想我会得到一个快速答案。我将Jon Skeet归功于我提出的问题的最佳答案。