从 unix 调用 Java Jar,某些特殊字符未正确打印

我有一个 unix 脚本,它调用 java jar 并提供一些加密文本(没有任何特殊字符)作为输入。Java 代码对其进行解密,然后将解密后的消息发送到数据库。

但有时会给出特殊字符 (à,ē) 作为输入。所以它们被加密并发送到jar文件。到目前为止一切顺利,但是当我们打印解密的消息时,spl 字符被转换为问号。我尝试直接打印一些特殊字符。当我手动运行 Unix 脚本时,它们也会被转换为问号。输出是垃圾字符而不是问号或特殊字符。

当我尝试放置一些这样的日志时, LOGGER.info("áéróspåcê")它会转换为 ??r?sp?c? 当脚本通过 crontab 运行时,而当我手动触发脚本时,“áéróspåcê”正在转换为 áéróspÃ¥cê。


饮歌长啸
浏览 221回答 1
1回答

qq_笑_17

显示输出由 LOCALE 和终端中可用的字体决定。此外,虽然 Java 使用 UTF,但根据此加密文本的呈现方式,无法保证数据以 UTF 呈现。您可以在您的 unix 提示符下尝试该命令locale,尤其是LANG并且可能会LC_ALL。$ localeLANG=en_US.UTF-8LC_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 程序的方式仍然可能存在问题,这可能会导致其他问题。然后,当您访问数据库时,数据库还必须支持多字节字符。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java