2009-07-29 13 views
6

estoy recibiendo un mensaje Unicode a través de la red, que se parece:C# leer unicode?

74 00 65 00 73 00 74 00 3F 00

estoy usando un BinaryReader a leer la secuencia de mi toma, pero el problema es que no ofrece una función "ReadWideString", o algo similar. Alguien tiene una idea de cómo lidiar con esto?

Gracias!

Respuesta

14

¡Simple!

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

donde array es su matriz de bytes.

+0

¡Gracias! Lo tengo funcionando, gracias a otros también. –

7

Las cadenas en C# son Unicode por defecto. Pruebe

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

donde data es una matriz byte [] que contiene sus datos Unicode. Si sus datos son big endian, puede probar

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

Cada byte cada 2 es igual a 0, es poco probable que sea utf-8. –

5

Se puede usar un StreamReader así:

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

Si el flujo sólo contiene líneas de texto a continuación, StreamReader es más adecuado que BinaryReader. Si su cadena está integrada dentro de datos binarios, entonces probablemente sea mejor decodificar la cadena utilizando el método Encoding.GetString, ya que otros han sugerido