2012-03-07 12 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

なぜあなたは、一度に1つの文字を書いていますか? –

+0

これは私が今知っている唯一の方法だからです。 – zgnilec

答えて

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

See here.

+0

Big Endianエンコーディングを使用する理由それは私にとって意味をなさない。私はちょうど固定線:bw.Write(pString [i]); bw.Write((ushort)pString [i])に;多分それは仕事になるでしょう。 – zgnilec

+1

x86だから、私はLEを使う。 USHORTにキャストするだけでOKです。 BinaryWriterがcharsのUTF8 encodinfを使用するように見えます。だから私はそれを防ぎ、すべて正常に動作します。とにかくお返事ありがとうございました。 – zgnilec

+1

@zgnilec System.Text.Encoding.Unicodeは、エンコードがUTF-16(リトルエンディアン)である必要があります。それがあなたが必要とするものなら、それを使用してください。 – Icarus

関連する問題