簡體   English   中英

從StreamReader.ReadLine()得到的字符串的編碼是什么

[英]What is the encoding of the string get from StreamReader.ReadLine()

首先,讓我們看看代碼:

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

正如喬爾在他的着名文章中所說:

如果您有字符串,內存,文件或電子郵件消息,則必須知道它所處的編碼,或者您無法解釋它或正確地將其顯示給用戶。“

所以這里有我的問題:字符串lineFromTxtFile的編碼是什么? UTF-8(因為它來自以UTF-8編碼的文本文件)? 或UTF-16(因為.NET中的字符串是“Unicode”(UTF-16))?

謝謝。

所有.Net字符串變量都使用Encoding.UnicodeUTF-16,little endian )進行編碼 更好的是,因為你知道你的文本文件是utf-8並告訴你的streamreader在構造函數中的正確編碼,所以任何特殊字符都將被正確處理。

.NET字符串是Unicode。 編碼不起作用,然后直到你需要使用它。 例如,如果您將其寫入文件,則將指定輸出編碼。 但是由於.NET通過庫調用來處理你對字符串所做的一切,所以它在內存中的表示方式並不重要。

它將是Unicode,因為所有.NET字符串都是。 真正的問題:為什么重要?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM