Java Jar 从 unix 调用,一些特殊字符无法正确打印



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

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

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

显示输出由 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 程序的方式仍然存在问题,这可能会导致其他问题。

然后,当您到达数据库时,数据库还必须支持多字节字符。

恐怕Windows控制台不支持特殊字符 这篇文章怎么可能与这个问题有关 如何在 Windows 命令行中使用 unicode 字符?

最新更新