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

标签 c# .net file file.readalllines

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

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/

相关文章:

c# - 实现 OpenID : identifying users

file - 如何在一行 unix 命令中连接两个文件(删除第二个文件的第一行)?

c# - 如何将枚举集合发送到 WCF 服务

c# - ASP.NET MVC - 正确使用 View 模型和命令模式

C#:按下 Enter 键时更改 DropDownList 值

c# - 使用按位运算符验证 if 条件

c# - 如何在不进行单元测试的情况下运行 .NET 方法?

c# - 更改项目时的 WPF 列表框选择问题

python - 在 Python 中从 .txt 文件中删除页码

javascript - 从文件中选择一个随机项目然后发送。不和谐机器人