2009-07-29 9 views
6

は、私は次のようになり、ネットワークを介してユニコードメッセージを受信して​​います:私は私のソケットからのストリームを読み取るためBinaryReaderを使用していますC#read unicode?

74 00 65 00 73 00 74 00 3F 00

が、問題それは "ReadWideString"関数、またはそれに類似した関数を提供していないということです。誰もこれに対処するアイデアですか?

ありがとうございます!

答えて

14

シンプル!

string str = System.Text.Encoding.Unicode.GetString(array); 

ここで、arrayは、バイト配列です。

+0

ありがとう!それは他の人のおかげで働いています。 –

7

C#の文字列は、デフォルトではUnicodeです。お試しください

string converted = Encoding.Unicode.GetString(data); 

ここで、dataはUnicodeデータを含むバイト[]配列です。あなたのデータがビッグエンディアンの場合、試すことができます

string converted = Encoding.BigEndianUnicode.GetString(data); 
+0

2バイトごとに1バイトごとにutf-8があります。 –

5

あなたはこのようStreamReader使用することができます:あなたのストリームはテキストのみの行が含まれている場合、StreamReaderBinaryReaderよりも適している

StreamReader sr = new StreamReader(stream, Encoding.Unicode); 

を。あなたの文字列がバイナリデータの中に埋め込まれている場合は、Encoding.GetStringメソッドを使用して文字列をデコードする方が良いでしょう。