Tengo un proyecto de Blackberry en el que estoy trabajando y necesito convertir matrices de bytes de cadenas codificadas usando UTF-16LE (little endian) a una matriz de bytes de cadena en el Codificación UTF-16BE (big endian) y vis. versa. Un servidor al que me estoy conectando envía las matrices de cadenas de bytes del dispositivo BlackBerry en la codificación UTF-16LE; sin embargo, el dispositivo no es compatible nativamente con UTF-16LE. Cuando intento decodificar las matrices de bytes en cadenas, las cadenas son ilegibles. El dispositivo, sin embargo, es compatible con UTF-16BE. También necesito revertir este proceso, es decir, convertir una matriz de bytes de una cadena con codificación UTF-16BE en lo que el servidor espera (UTF-16LE). Gracias.UTF-16BE a UTF-16LE, y
I no puede hacer esto en el dispositivo:
String test = "test";
byte[] testBytes = test.getBytes("UTF-16LE");// throws UnsupportedEncodingException
I puede hacer esto:
String test = "test";
byte[] testBytes = test.getBytes("UTF-16BE");//works
¿Qué obtienes si solo usas 'byte [] testBytes = test.getBytes (" UTF-16 ")'? ¿Su servidor pone el carácter BOM correcto al comienzo de la cadena y Blackberry detecta automáticamente a Big Endian? – HeatfanJohn
@HeatfanJohn test.getBytes ("UTF-16") arroja una excepción también. No estoy seguro de si el servidor pone la lista de materiales al comienzo de la cadena. Es un servidor ASP.Net ADFS (si eso ayuda). BlackBerry no detecta automáticamente. Gracias. – RyanM