2014-02-16 61 views
1

我正在嘗試使用c#BinaryWriter和BinaryReader類編寫和讀取二進制文件。 當我在文件中存儲一個字符串時,它正確存儲它,但是當我試圖讀取它時,它返回一個字符串,它在字符串中每個替代位置都有'\ 0'字符。c#中的BinaryReader讀取字符串的所有字符之間的' 0'

下面是代碼:

public void writeBinary(BinaryWriter bw) 
{ 
    bw.Write("Hello"); 
} 

public void readBinary(BinaryReader br) 
{ 
    BinaryReader br = new BinaryReader(fs); 
    String s; 
    s = br.ReadString(); 
    } 

下面就越來越值= 「H \ 0E \0升\0升\ 0°\ 0」。

+3

[絕對最低限度每個軟件開發人員絕對肯定必須瞭解Unicode和字符集(無藉口!)](http://joelonsoftware.com/articles/Unicode.html) – GSerg

+0

您需要考慮字符編碼如@CSerg所示。 .NET中的所有字符串都使用UTF8編碼(每個字符2個字節),它支持許多腳本(羅馬語,日語,希伯來語等)。 – wdosanjos

回答

3

在讀取和寫入文件時,您正在使用不同的編碼。

在寫入文件時,您使用的是UTF-16,因此每個字符最終都是16位字符代碼,即兩個字節。

讀取文件時,您正在使用UTF-8或某些8位編碼,因此每個字節最終都會成爲一個字符。

選擇一種編碼並用於讀取和寫入文件。

+0

http://stackoverflow.com/questions/496321/utf8-utf16-and-utf32 – wdosanjos

相關問題