我正在尝试读取文件中的所有行,但是我得到了一些意外的结果,代码:
var readLines = File.ReadLines(file);
foreach (var line in readLines)
{
//line = "T\0e\0s\0t\0"
}
文件内容:
Test
如果我执行 line.Replace("\0", "")
那么它工作正常,但是我想了解为什么会发生这种情况以及如何从文件中获取正确的值使用 ReadLines?
最佳答案
您的文件似乎是用 UTF-16 编码的。在ReadLines()
var readLines = File.ReadLines(file, Encoding.Unicode);
不带第二个参数的
File.ReadLines()
假定 UTF-8 作为文件的编码。 UTF-16 文件使用两个字节对一个字符进行编码(拉丁字符在 UTF-16 中使用第一个字节,在 UTF-8 中仅使用一个字节)。因此,对于 UTF-8,文本中的所有其他字符都是 \0
。
关于c# - File.ReadLines 在每个字符之后返回空字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50140689/