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=]
.
我正在尝试读取文件中的所有行,但是我得到了一些意想不到的结果,代码:
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=]
.