關於StreamReader的建構函式

2022-01-31 16:43:32 字數 832 閱讀 2087

今天因為乙個偶然的機會仔細看了一下system.io.streamreader的2個建構函式streamreader(string,encoding)和streamreader(string),其中第乙個建構函式的encoding引數可以設定為system.text.encoding.default,如果直接從表面上看很容易把streamreader(@"e:\ehr\epayrolldata.sql")和streamreader(@"e:\ehr\epayrolldata.sql",system.text.encoding.default)這兩種構造認為是同乙個作用,但實際上卻不是這樣。

翻看了msdn,它對這兩者是這樣解釋的:

streamreader(string)

為指定的檔名初始化 streamreader 類的新例項。

streamreader(string,encoding)

為指定的檔名初始化 streamreader 類的新例項,帶有指定的字元編碼。

繼續仔細看下去,streamreader(string) 提到「使用了預設的字元編碼和預設的緩衝區大小。」,而system.text.encoding.default 則表示系統的當前 ansi **頁的編碼。很明顯這兩者是截然不同的。

在我安裝了win2kpro簡體的機器進行測試,結果也正是這樣,streamreader(string) 的當前encoding是system.text.utf8encoding,而streamreader(string,system.text.encoding.default)則為system.text.codepageencoding,後者的值取決於你所安裝的系統設定。

我本機的顯示為簡體中文gb2312

C 中StreamReader讀取中文出現亂碼

有時在用c 中streamreader讀取中文時出現亂碼 如 原因是自windows 2000之後的作業系統在檔案處理時預設編碼採用unicode 所以.net檔案的預設編碼也是unicode。除非另外指定,streamreader的預設編碼為unicode,而不是當前系統的ansi 頁。但是文件大...

c 用StreamReader對檔案讀取

型別 陣列反顯,處理 public void ontypearrayshowitem 讀取對應的天線型別檔案 opentext 建立乙個utf 8 編碼的streamreader物件 streamreader currenttypearraysr currenttypearrayfile.opent...

C 使用StreamReader類讀取漢字

我們上個例子中的 using system using system.collections.generic using system.text using system.io class program sr.close catch ioexception ex console.readkey 如...