2009-07-29 20 views
6

sto ricevendo un messaggio unicode tramite la rete, che assomiglia a:C# leggi unicode?

74 00 65 00 73 00 74 00 3F 00

Sto usando un BinaryReader per leggere il flusso dalla mia presa, ma il problema è che non offre una funzione "ReadWideString", o qualcosa di simile ad esso. Qualcuno ha un'idea su come affrontarlo?

Grazie!

risposta

14

Semplice!

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

dove array è la matrice di byte.

+0

Grazie! Ho funzionato, grazie anche agli altri. –

7

Le stringhe in C# sono Unicode per impostazione predefinita. Prova

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

dove data è un array di byte [] contenente i dati Unicode. Se i tuoi dati sono big endian, puoi provare

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

Ogni byte ogni 2 è uguale a 0, è piuttosto improbabile che sia utf-8. –

5

si potrebbe usare una StreamReader come questo:

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

Se il flusso contiene solo righe di testo poi StreamReader è più adatto di BinaryReader. Se la tua stringa è incorporata in dati binari, probabilmente è meglio decodificare la stringa usando il metodo Encoding.GetString come altri hanno suggerito