我想使用System.IO.File.ReadAllLines将文本文件读入字符串数组。但是,ReadAllLines会删除我想要保留的文件中的一些奇怪字符,例如chr(187)。我尝试了一些不同的编码选项,但这没有帮助,我没有看到“无编码”的选项。
我可以使用FileOpen和LineInput来不经修改地读取文件,但这有点慢。使用FileSystemObject也可以正常工作,但我宁愿不使用它。
在.net中将文本文件读入字符串数组而不进行修改的最佳方法是什么?
答案 0 :(得分:6)
没有“无编码”这样的概念。您必须找出正确的编码,否则您无法正确解释数据。
当你说“chr(187)”时,你的意思是什么Unicode字符?
您可能想尝试的一些编码:
答案 1 :(得分:2)
听起来你想要读取原始字节。
使用File.ReadAllBytes
将它们读入数组(不要对大文件执行此操作),或使用FileStream
一次读取大块字节。
答案 2 :(得分:0)
被剥离的字符位于文件的开头。事实证明它们是UTF-8的字节顺序标记。 File.ReadAllLines和File.ReadAllText删除了字节顺序标记,而LineInput和FileSystemObject函数则没有。
如果我在问题中解释了奇怪的字符在文件的开头,我想我会得到一个快速答案。我将Jon Skeet归功于我提出的问题的最佳答案。