Предполагается, что у вас есть поток (или массив byte
s), содержащий строку в кодировке UTF-16LE.
String str0 = "Hello, I am a UTF-16LE encoded String";
byte[] utf16le = str.getBytes("UTF-16LE");
Если вы не преобразуете их обратно и не будете указывать используемый набор символов, вы будете создавать строку, содержащую много 0-байтов (UTF-16LE, очевидно, 16-битный) в результирующей строке.
String wrong = new String(utf16le); // This will produce crap with \0:s in it.
String correct = new String(utf16le, "UTF-16LE"); // This will be the actual string.
Примечание : если вы сбросите подобные строки в TextView в ICS, они уберут для вас мусор и не выведут «H e l l o».