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

标签 java utf-8 hex translation decode

我已将区域语言单词转换为十六进制值并保存到数据库。但是我如何将该十六进制值解码回区域语言单词。

这是我的卡纳达语/泰卢固语单词到十六进制值的转换

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/

相关文章:

java - 验证货币代码与允许值之一匹配

java - 使用@Transactional时无法捕获的异常

php - UTF-8贯穿始终

Mysql,数据库编码为UTF-8

python - 将 numpy 数组转换为十六进制字节数组

java - 如何在 Spring 中为包(包括子包)中的每个 bean id 添加常量字符串前缀?

java - 如何在一次测试中启动2个Spring Boot应用程序?

java - 在java中输出为UTF-8编码

将二进制转换为十六进制

c - 十六进制 int 变量 C 中的前导零