File.ReadLines returns 空字符在每个字符之后

File.ReadLines returns null char after each other char

我正在尝试读取文件中的所有行,但是我得到了一些意想不到的结果,代码:

var readLines = File.ReadLines(file);

foreach (var line in readLines)
{
    //line = "T[=12=]e[=12=]s[=12=]t[=12=]"
}

文件内容:

Test

如果我这样做 line.Replace("[=13=]", "") 那么它工作正常但是我想了解为什么会发生这种情况以及如何使用 ReadLines 从文件中获取正确的值?

您的文件似乎是用 UTF-16 编码的。在第二个参数中指定编码为ReadLines()

var readLines = File.ReadLines(file, Encoding.Unicode);

没有第二个参数的

File.ReadLines() 假定 UTF-8 作为文件的编码。 UTF-16 文件使用两个字节来编码一个字符(拉丁字符在 UTF-16 中使用第一个字节,而在 UTF-8 中只使用一个字节)。所以对于 UTF-8,在你的文本中,每个其他字符都是 [=13=].