C# File.ReadLines在每个字符之后返回空字符

C# File.ReadLines在每个字符之后返回空字符,c#,.net,file,file.readalllines,C#,.net,File,File.readalllines,我正在尝试读取文件中的所有行,但是我得到了一些意外的结果,代码: var readLines = File.ReadLines(file); foreach (var line in readLines) { //line = "T\0e\0s\0t\0" } 文件内容: 试验 如果我将执行line.Replace\0,那么它可以正常工作,但是我想了解为什么会发生这种情况,以及如何使用ReadLines从文件中获取正确的值?您的文件似乎是用UTF-16编码的。在ReadLines的第

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

var readLines = File.ReadLines(file);

foreach (var line in readLines)
{
    //line = "T\0e\0s\0t\0"
}
文件内容:

试验


如果我将执行line.Replace\0,那么它可以正常工作,但是我想了解为什么会发生这种情况,以及如何使用ReadLines从文件中获取正确的值?

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


不带第二个参数的File.ReadLines假定UTF-8是文件的编码。UTF-16文件使用两个字节对字符进行编码拉丁字符使用UTF-16中的第一个字节,UTF-8中仅使用一个字节。所以对于UTF-8,在文本中,每隔一个字符都是\0。

在我看来像文件编码,文件使用什么编码?就是这样。谢谢你知道为什么会导致这种奇怪的行为吗?这不是奇怪的行为;不管是谁写的这个文件都让它保存了这样的字符。
var readLines = File.ReadLines(file, Encoding.Unicode);