为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

饮歌长啸 2021-11-11 17:44:41
我有一个 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 程序的方式仍然可能存在问题,这可能会导致其他问题。


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


查看完整回答
反对 回复 2021-11-11
  • 1 回答
  • 0 关注
  • 215 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信