Java使用utf-8编码解码十六进制值

时间:2017-12-11 13:27:30

标签: java encoding utf-8

我正在尝试将一些十六进制值解码为它们的实际名称,但我遇到了问题。

21043D0438043C043E043A04应解码为СНИМОК。 我正在使用的当前代码

String test = "21043D0438043C043E043A04";
byte[] bytes = Hex.decodeHex(test.toCharArray());               
String a = new String(bytes, "UTF-8");

但是我得到了一些非常奇怪的结果。

尝试将其作为utf8字节但不起作用。

byte[] bytesone = test.getBytes(Charset.forName("UTF-8"));
String b = new String(bytesone, Charset.forName("UTF-8"));
byte[] bytes = Hex.decodeHex(b.toCharArray());              
String a = new String(bytes, "UTF-8");

提前致谢

2 个答案:

答案 0 :(得分:4)

\u0421是西里尔文С所以代码似乎是UTF-16LE(小端)。

String a = new String(bytes, "UTF-16LE");
String a = new String(bytes, StandardCharsets.UTF_16LE);

答案 1 :(得分:3)

这看起来更像是UTF-16LE。