首先,让我们看看代码:
//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))?
感谢。
答案 0 :(得分:6)
所有.Net字符串变量都使用Encoding.Unicode( UTF-16,little endian )进行编码。更好的是,因为你知道你的文本文件是utf-8并告诉你的streamreader在构造函数中的正确编码,所以任何特殊字符都将被正确处理。
答案 1 :(得分:2)
.NET strings是Unicode。编码不起作用,然后直到你需要使用它。例如,如果您将其写入文件,则将指定输出编码。但是由于.NET通过库调用来处理你对字符串所做的一切,所以它在内存中的表示方式并不重要。
答案 2 :(得分:1)
它将是Unicode,因为所有.NET字符串都是。真正的问题:为什么重要?