我已将区域语言单词转换为十六进制值并保存到数据库。但是我如何将该十六进制值解码回区域语言单词。
这是我的卡纳达语/泰卢固语单词到十六进制值的转换
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);
关于java - 如何将某些语言单词的十六进制值恢复为 UTF-8,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45980545/