首先,让我们看看代码:
//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中所说:
If you have a string,in memory,in a file,or in an email message,you have to know what encoding it is in or you cannot interpret it or display it to users correctly.”
所以这里有我的问题:字符串lineFromTxtFile的编码是什么? UTF-8(因为它来自以UTF-8编码的文本文件)?或UTF-16(因为.NET中的字符串是“Unicode”(UTF-16))?
谢谢.
解决方法
.NET strings是Unicode.编码不起作用,然后直到你需要使用它.例如,如果您将其写入文件,则将指定输出编码.但是由于.NET通过库调用来处理你对字符串所做的一切,所以它在内存中的表示方式并不重要.