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

问题描述 投票:7回答:3

首先,让我们看看代码:

//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();
}

正如乔尔在他着名的article中所说:

如果你有一个字符串,内存,文件或电子邮件消息,你必须知道它所处的编码,或者你无法解释它或正确地将它显示给用户。“

所以这里有我的问题:字符串lineFromTxtFile的编码是什么? UTF-8(因为它来自以UTF-8编码的文本文件)?或UTF-16(因为.NET中的字符串是“Unicode”(UTF-16))?

谢谢。

c# unicode streamreader
3个回答
2
投票

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


6
投票

所有.Net字符串变量都使用Encoding.Unicode(UTF-16,little endian)编码。更好的是,因为你知道你的文本文件是utf-8并告诉你的streamreader在构造函数中的正确编码,所以任何特殊字符都将被正确处理。


1
投票

它将是Unicode,因为所有.NET字符串都是。真正的问题:为什么重要?

© www.soinside.com 2019 - 2024. All rights reserved.