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;
}
现在我正在尝试解析十六进制字符串 419俄语字符 Й在java代码如下
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 - 从 .txt 文件中获取信息时无法找到平均值和总数

javascript - JavaScript 中 instanceof 是如何实现的

javascript - 如何使用 React 教程修复 meteor 中的 eslint 错误

php - 如何在 Apache 服务 CentOS 7 中安装模块 libphp5.so

java - Lotus Notes - Java UI - Eclipse 插件

java - 嵌套的Java 8用于循环和条件

java - jar 中没有 list 的依赖项(JBoss 部署)

javascript - 如何使用 browserify 要求 jQuery.loadTemplate

php - Web 应用程序的超快速数据库访问 - SQL 或 NoSQL、解释的 PHP 或编译的 C?

java - 将 ssl 处理从 Tomcat 转移到 Apache?