Я получаю текст строки через USB-связь в Android в виде расширенных символов ASCII, таких как
String receivedText = "5286T11ɬ ªË ¦¿¯¾ ¯¾ ɬ ¨¬°:A011605286 ª¿ª ¾®:12:45 ¸Í®°:(9619441121)ª¿ª:-, ®¹¿¦Í°¾ ¡ ®¹¿¦Í°¾ ª¨À, ¾¦¿µ²À ¸Í, ¾¦¿µ²À ªÂ°Íµ °¿®¾°Í͸:- ¡Í°Éª:-, ¬¾¹°, ¸¾¤¾Í°Â¼ ªÂ°Íµ~";
Теперь эти символы представляют строку на хинди.
Я не понимаю, как преобразовать эту полученную строку в текст, эквивалентный хинди. Любой знает, как преобразовать это в эквивалентный текст на хинди, используя java
Ниже приведен фрагмент кода, который я использую для преобразования массива байтов в строку байтов.
public String byteArrayToByteString(byte[] arayValue, int size) {
byte ch = 0x00;
int i = 0;
if (arayValue == null || arayValue.length <= 0)
return null;
String pseudo[] = { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9",
"A", "B", "C", "D", "E", "F" };
StringBuffer out = new StringBuffer();
while (i < size) {
ch = (byte) (arayValue[i] & 0xF0); // Strip off high nibble
ch = (byte) (ch >>> 4); // shift the bits down
ch = (byte) (ch & 0x0F); // must do this is high order bit is on!
out.append(pseudo[(int) ch]); // convert the nibble to a String
// Character
ch = (byte) (arayValue[i] & 0x0F); // Strip off low nibble
out.append(pseudo[(int) ch]); // convert the nibble to a String
// Character
i++;
}
String rslt = new String(out);
return rslt;
}
Дайте мне знать, если это поможет найти решение
ИЗМЕНИТЬ:
Это кодировка UTF-16, а символы в строке ReceiveText представлены в виде расширенного ASCII для символов хинди.
Новое изменение
у меня новые персонажи
String value = "?®Á?Ƕ ¡??°¿¯¾";
Который говорит मुकेश на хинди и dangaria на хинди. Переводчик Google не переводит дангарию на хинди, поэтому я не могу предоставить вам ее версию на хинди.
Я разговаривал с человеком, занимающимся кодированием, он сказал, что он удалил 2 бита из ввода перед кодированием, т.е. если अ представляет अ на хинди, то он удалил \u09 из ввода и преобразовал оставшиеся 05 в расширенную шестнадцатеричную форму.
Таким образом, новая входная строка, которую я вам предоставил, декодируется в форме приведенного выше объяснения. т. е. \u09 удаляется, а остальные преобразуются в расширенные символы ASCII, а затем отправляются на устройство с помощью USB.
Дайте мне знать, если это объяснение поможет вам найти решение
InputStreamReader
с тем же, если получаете данные отInputStream
. - person McDowell   schedule 04.02.2013Locale
в Java не влияет на кодировку текста. - person McDowell   schedule 04.02.2013मुकेश
? - person laz   schedule 26.02.2013String
? Можно ли работать с необработанными байтами, полученными через USB-соединение? Я до сих пор не уверен, что понимаю, в какой кодировке находятся данные из USB-соединения. Вы упоминаете об усечении байтов, что, похоже, приведет к потере данных. Вы также упоминаете кодировку в расширенном ASCII. Это означает ISCII или нет? - person laz   schedule 27.02.2013