如何将某些语言单词的六进制值恢复为UTF-8

问题描述:

我已将区域语言单词转换为十六进制值并保存到数据库。但是,我怎样才能将这个hexa值解码回区域语言单词。如何将某些语言单词的六进制值恢复为UTF-8

这里是我的卡纳达语/泰卢固语字为十六进制值转换

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

请帮助...

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

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

您可加入完整性检查,例如输入阵列的长度是偶数等。

+0

这是不工作...我得到'> 5>'作为输出 – Hema