2009-07-29 12 views
6

Ich bin eine Unicode-Nachricht über das Netzwerk, das wie folgt aussieht:C# Unicode lesen?

74 00 65 00 73 00 74 00 3F 00

ich ein Binary bin mit dem Strom aus meiner Steckdose zu lesen, aber das Problem ist, dass es keine "ReadWideString" -Funktion oder etwas Ähnliches bietet. Hat jemand eine Idee, wie man damit umgeht?

Danke!

Antwort

14

Einfach!

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

wo array ist Ihr Array von Bytes.

+0

Danke! Habe es funktioniert, danke auch an andere. –

7

Zeichenfolgen in C# sind standardmäßig Unicode. Versuchen Sie

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

wo Daten ist ein byte [] Array mit Ihren Unicode-Daten. Wenn Ihre Daten Big Endian sind, können Sie versuchen

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

Jedes Byte alle 2 ist gleich 0, es ist eher unwahrscheinlich, dass es utf-8 ist. –

5

Sie könnten eine StreamReader wie folgt verwenden:

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

Wenn Strom nur Textzeilen enthält dann ist StreamReader besser geeignet als BinaryReader. Wenn Ihre Zeichenfolge in Binärdaten eingebettet ist, ist es wahrscheinlich besser, die Zeichenfolge mit der Encoding.GetString-Methode zu decodieren, wie andere vorgeschlagen haben