File.ReadLines在每个其他字符之后返回null字符

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


var readLines = File.ReadLines(file);


foreach (var line in readLines)

{

    //line = "T\0e\0s\0t\0"

}

文件内容:


测试


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


倚天杖
浏览 155回答 1
1回答

红颜莎娜

您的文件似乎使用UTF-16编码。在第二个参数中指定编码ReadLines()var readLines = File.ReadLines(file, Encoding.Unicode);File.ReadLines()如果没有第二个参数,则假定UTF-8作为文件的编码。UTF-16文件使用两个字节来编码字符(拉丁字符使用UTF-16中的第一个字节,而UTF-8中仅使用一个字节)。因此对于UTF-8,在您的文本中,每个其他字符都是\0。
打开App,查看更多内容
随时随地看视频慕课网APP