在 url 参数中发送十六进制字符串并尝试在服务器端将其转换为字符串。 使用以下javascript编码代码转换用户输入的字符串
function encode(string) {
var number = "";
var length = string.trim().length;
string = string.trim();
for (var i = 0; i < length; i++) {
number += string.charCodeAt(i).toString(16);
}
return number;
}
现在我正尝试在 Java 代码中解析十六进制字符串 419
以获取俄语字符 Й
byte[] bytes = "".getBytes();
try {
bytes = Hex.decodeHex(hex.toCharArray());
sb.append(new String(bytes,"UTF-8"));
} catch (DecoderException e) {
e.printStackTrace(); // Here it gives error 'Odd number of characters'
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
但它给出了以下错误
"org.apache.commons.codec.DecoderException: Odd number of characters."
如何解决。由于许多俄语字符具有 3 位十六进制代码,因此无法将其转换为 .toCharArray()
。
最佳答案
改用Base64
val aes = KeyGenerator.getInstance("AES")
aes.init(128)
val secretKeySpec = aes.generateKey()
val base64 = Base64.encodeToString(secretKeySpec.encoded, 0)
val bytes = Base64.decode(base64, 0)
SecretKeySpec(bytes, 0, bytes.size, "AES") == secretKeySpec
关于java - org.apache.commons.codec.DecoderException : Odd number of characters,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27904638/