我有一个 unix 脚本,它调用 java jar 并提供一些加密文本(没有任何特殊字符)作为输入。Java 代码对其进行解密,然后将解密后的消息发送到数据库。但有时会给出特殊字符 (à,ē) 作为输入。所以它们被加密并发送到jar文件。到目前为止一切顺利,但是当我们打印解密的消息时,spl 字符被转换为问号。我尝试直接打印一些特殊字符。当我手动运行 Unix 脚本时,它们也会被转换为问号。输出是垃圾字符而不是问号或特殊字符。当我尝试放置一些这样的日志时, LOGGER.info("áéróspåcê")它会转换为 ??r?sp?c? 当脚本通过 crontab 运行时,而当我手动触发脚本时,“áéróspåcê”正在转换为 áéróspÃ¥cê。
1 回答
qq_笑_17
TA贡献1818条经验 获得超7个赞
显示输出由 LOCALE 和终端中可用的字体决定。此外,虽然 Java 使用 UTF,但根据此加密文本的呈现方式,无法保证数据以 UTF 呈现。
您可以在您的 unix 提示符下尝试该命令locale,尤其是LANG并且可能会LC_ALL。
$ locale
LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_ALL=
使用 UTF-8 和正确的终端字体,它将正确显示。
但是,加密文本呈现给 java 程序的方式仍然可能存在问题,这可能会导致其他问题。
然后,当您访问数据库时,数据库还必须支持多字节字符。
添加回答
举报
0/150
提交
取消