我怎样才能将某些语言单词的十六进制值恢复为 UTF-8

How can i revert back hexa value of certain language word to UTF-8

我已经将区域语言单词转换为十六进制值并保存到数据库中。但是我怎样才能将该六边形值解码回区域语言单词。

这是我的 Kannada/Telugu 字到十六进制值的转换

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;
}

我保存的单词是 జావా

数据库中保存的十六进制值为0C1C0C3E0C350C3E

我得到的解码输出是:>5>

有什么方法可以将十六进制值解码回 జావా

用于解码的代码是

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

请帮忙...

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");

您可以添加完整性检查,例如输入数组的长度是偶数等

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);
}

这假设转换没有干扰负的十六进制值。

或者利用 char 是 UTF-16BE:

byte[] bytes = DatatypeConverter.parseHexBinary(itemName);
return new String(bytes, StandardCharsets.UTF_16);