从StreamReader.ReadLine()得到的字符串的编码是什么?

本文关键字:字符串 编码 是什么 StreamReader ReadLine | 更新日期: 2023-09-27 18:14:03

首先,让我们看看代码:

//The encoding of utf8.txt is UTF-8
StreamReader reader = new StreamReader(@"C:''utf8.txt", Encoding.UTF8, true);
while (reader.Peek() > 0)
{
    //What is the encoding of lineFromTxtFile?
    string lineFromTxtFile = reader.ReadLine();
}

正如Joel在他那篇著名的文章中所说:

如果你有一个字符串,在内存中,在文件中,或者在电子邮件消息中,你必须知道它是用什么编码,否则你不能正确地解释它或向用户显示它。"

所以这里有我的问题:什么是字符串的编码 linefromtfile ?UTF-8(因为它是从一个文本文件编码在UTF-8)?或UTF-16(因为字符串在。net是"Unicode"(UTF-16))?

谢谢。

从StreamReader.ReadLine()得到的字符串的编码是什么?

所有。net字符串变量都使用Encoding进行编码。Unicode (UTF-16,小端序)。更好的是,由于您知道文本文件是utf-8格式,并在构造函数中告诉流阅读器正确的编码,因此任何特殊字符都将被正确处理。

。. NET字符串是Unicode。编码不起作用,直到下次需要使用它。例如,如果要将其写入文件,则需要指定输出编码。但是由于。net通过库调用来处理你对字符串所做的一切,所以它在内存中的表示方式并不重要。

应该是Unicode,因为所有。net字符串都是Unicode。真正的问题是:为什么这很重要?