java - org.apache.commons.codec.DecoderException : Odd number of characters

标签 java javascript apache encode

在 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/

相关文章:

java - onToped JFrame 打开 JDialog = 对话框未覆盖 JFrame

javascript - jQuery 菜单用户界面。展开二级子菜单时自动展开三级子菜单

java - 如何初始化 org.apache.commons.math3.geometry.Vector?

php - 网站没有正确重定向

apache - 使用 mod_rewrite/RewriteCond 规则进行内容协商

java - 将泛型返回类型与 Java 中类似的泛型变量进行比较

java - JAVA中从txt文件到二维双数组

java - SWT ScrolledComposite 不会滚动大型复合 Material

javascript - FB._https = true 与 FB.Canvas.setAutoResize 配合不好?

javascript - 是否有可能从 xml 中读取每个节点