Ho un progetto Blackberry su cui sto lavorando e ho bisogno di convertire array di byte di stringhe codificate usando UTF-16LE (little endian) in una serie di stringhe di byte nel Codifica UTF-16BE (big endian) e vis. versa. Un server a cui mi sto collegando sta inviando le matrici di stringhe di stringhe di dispositivi BlackBerry nella codifica UTF-16LE, tuttavia il dispositivo non supporta nativamente UTF-16LE. Quando provo a decodificare gli array di byte in stringhe, le stringhe sono illeggibili. Il dispositivo, tuttavia, supporta UTF-16BE. Devo anche invertire questo processo, cioè convertire una matrice di byte di una stringa con la codifica UTF-16BE in ciò che il server si aspetta (UTF-16LE). Grazie.UTF-16BE a UTF-16LE e ritorno
I non può fare questo sul dispositivo:
String test = "test";
byte[] testBytes = test.getBytes("UTF-16LE");// throws UnsupportedEncodingException
I può farlo:
String test = "test";
byte[] testBytes = test.getBytes("UTF-16BE");//works
Cosa ottieni se usi solo 'byte [] testBytes = test.getBytes (" UTF-16 ")'? Il tuo server inserisce il carattere BOM corretto all'inizio della stringa e Blackberry rileva automaticamente big endian? – HeatfanJohn
@HeatfanJohn test.getBytes ("UTF-16") genera anche un'eccezione. Non sono sicuro che il server inserisca la distinta base all'inizio della stringa. È un server ADFS ASP.Net (se questo aiuta). BlackBerry non rileva automaticamente. Grazie. – RyanM