为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C#
倚天杖 2021-05-07 14:19:38
我正在尝试从文件中读取所有行,但是我得到了一些意外的结果,代码:var readLines = File.ReadLines(file);foreach (var line in readLines){    //line = "T\0e\0s\0t\0"}文件内容:测试如果可以的line.Replace("\0", "")话,它可以正常工作,但是我想了解为什么会发生这种情况,以及如何使用ReadLines从文件中获取正确的值?
查看完整描述

1 回答

?
红颜莎娜

TA贡献1842条经验 获得超12个赞

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

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

File.ReadLines()如果没有第二个参数,则假定UTF-8作为文件的编码。UTF-16文件使用两个字节来编码字符(拉丁字符使用UTF-16中的第一个字节,而UTF-8中仅使用一个字节)。因此对于UTF-8,在您的文本中,每个其他字符都是\0


查看完整回答
反对 回复 2021-05-23
  • 1 回答
  • 0 关注
  • 153 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信