2017-08-31 2 views
0

Ich habe ein Regionalsprachenwort in einen Hexadezimalwert konvertiert und in der DB gespeichert. Aber wie kann ich diesen Hexa-Wert zurück in das regionale Sprachwort decodieren?Wie kann ich den Hexa-Wert eines bestimmten Sprachwortes auf UTF-8 zurücksetzen?

Hier ist mein Kannada/Telugu Wort Hex-Wert Umwandlung

public String toHex(String b){ 
    String s=""; 
    for (int i=0; i<b.length(); ++i) s+=String.format("%04X",b.charAt(i)&0xffff); 
    System.out.println("Converted value:::"+s); //0C1C0C3E0C350C3E 
    return s; 
} 

Wort i gespeichert haben, ist జావా

Hex-Wert in der Datenbank gespeichert wird 0C1C0C3E0C350C3E

Decoded Ausgang bin immer ist :

Gibt es eine Möglichkeit, die zu dekodieren Hex-Wert zurück zu జావా

-Code zu dekodieren verwendet wird, ist

byte[] bytes = DatatypeConverter.parseHexBinary(itemName); 
    String s= new String(bytes, "UTF-8"); 
    System.out.println("Utf..."+s); 

Bitte helfen ...

Antwort

1
public String fromHex(String b) { 
    char[] cs = new char[b.length()/4]; 
    for (int i = 0; i < cs.length; ++i) { 
     int c = Integer.parseInt(b.substring(4 * i, 4 * i + 4), 16) & 0xFFFF; 
     cs[i] = (char) c; 
    } 
    return new String(cs); 
} 

Dies setzt voraus, dass die Konvertierung nicht mit negativen Hex-Werten überlagert wurde.

Oder dass char nutzt, ist UTF-16 BE:

byte[] bytes = DatatypeConverter.parseHexBinary(itemName); 
return new String(bytes, StandardCharsets.UTF_16); 
0
char[] data = hexData.toCharArray(); 
byte[] bytes = new byte[data.length/2]; 
for (int i = 0; i < data.length; i += 2) { 
    String val = new String(data, i, 2); 
    bytes[i/2] = Integer.valueOf(val, 16).byteValue(); 
} 
String text = new String(bytes, "UTF8"); 

Sie könnten Plausibilitätsprüfungen hinzufügen, zum Beispiel dass die Länge des Eingangs-Arrays gerade ist, etc.

+0

Dies funktioniert nicht ... sind immer '> 5>' als Ausgang – Hema

Verwandte Themen