为什么journalctl以ASCII输出?

为什么journalctl以ASCII输出?

我有一个常规的 Ubuntu 16.04 服务器虚拟机。我的区域设置在所有地方都设置为 utf-8:

$ locale
LANG=en_US.UTF-8
LANGUAGE=
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_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=

我的应用程序设置为记录到它自己的文件和标准输出,这些输出被消耗到 systemd-journald (所有默认值)中。但是当我的应用程序输出不是 ASCII 时,journalctl 似乎会截断为 ASCII:

$ journalctl -u some.app --since "5 minutes ago"
Dec 01 14:37:57 some.hostname java[7037]: 2017-12-01 14:37:57.457 +0000 INFO : 
controllers.Users - Updating user: {"????":"???????","???????_???????_?????":"1","???????_???????_????_??????":"2","???????_???????_?????":"3"}

虽然应用程序日志和手动启动应用程序时通过管道传输到文件中的输出都包含正确的 UTF-8 编码输出。

我究竟做错了什么?为什么journalctl似乎以ASCII输出?

相关内容