2012-03-07 60 views
1

我的代碼:寫入字符串流

 public static void DoStrumienia (string pString, Stream pStream) 
     { 
       if (pStream == null) throw new ArgumentNullException(); 

       BinaryWriter bw = new BinaryWriter (pStream); 

       int rozmiar = pString.Length; 
       bw.Write (rozmiar); 

       for (int i = 0; i < rozmiar; i++) 
       { 
        bw.Write (pString[i]); 
       } 

       bw.Flush(); 
     } 

它寫入字符串流,但它使用寫UTF8編碼。 如何使用UTF16?

+0

你爲什麼在同一時間寫一個人物? – 2012-03-07 22:21:21

+0

因爲這是我現在知道的唯一途徑。 – zgnilec 2012-03-07 22:35:14

回答

11
System.Text.Encoding encoding = System.Text.Encoding.Unicode; 
BinaryWriter bw = new BinaryWriter (pStream, encoding); 

See here.

+0

爲什麼我應該使用Big Endian編碼?它對我沒有意義。我只是固定線:bw.Write(pString [i]); to(bh.Write((ushort)pString [i]);也許它會起作用。 – zgnilec 2012-03-07 22:41:26

+1

x86,所以我使用LE。只需投射到USHORT就可以讓一切順利。看起來像BinaryWriter使用UTF8 encodinf字符。所以ushort阻止它,一切正常。無論如何謝謝你的答案。 – zgnilec 2012-03-07 22:50:48

+1

@zgnilec System.Text.Encoding.Unicode應該是UTF-16(小端)編碼。如果那是你需要的,那麼使用那個。 – Icarus 2012-03-07 22:52:26