次のような拡張ASCII文字の形式で、AndroidのUSB通信を介して文字列テキストを受信しています
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 エンコーディングであり、receivedText 文字列内の文字は、ヒンディー語文字の拡張 ASCII 形式です。
新しい編集
新しいキャラクターがいます
String value = "?®Á?Ƕ ¡??°¿¯¾";
ヒンディー語ではमुकेश、ヒンディー語ではダンガリアと言います。Google翻訳者はダンガリアをヒンディー語に翻訳していないので、ヒンディー語版を提供することはできません.
エンコードを行っている人に話を聞いたところ、エンコード前に入力から 2 ビットを削除したとのことでした。
したがって、私が提供した新しい入力文字列は、上記の説明の形式でデコードされます。つまり、\u09 は削除され、残りは拡張 ASCII に変換され、USB を使用してデバイスに送信されます。
この説明が解決策を見つけるのに役立つかどうか教えてください