使用log4j2登录时aix系统上的编码问题

使用log4j2登录时aix系统上的编码问题

我正在使用 log4j2 在 aix 系统上记录消息。当我使用命令时,在日志中less我可以看到:

...|LU?N
...|NOV�K
...|ZEM�NEK

当我在 ubunty 系统上复制相同的文件并使用相同的程序时,我可以看到:

...|LU?N<DD>
...|NOV<C1>K
...|ZEM<C1>NEK

所以我的 log4j2 配置有问题所以我添加 charset="UTF-8"

现在在aix系统上我可以看到:

...|LUŽN<9D>
...|NOV<81>K
...|ZEM<81>NEK

但是当我复制到我的 ubuntu 时我可以看到正确的值:

...|LUŽNÝ
...|NOVÁK
...|ZEMÁNEK

所以我的问题是我应该使用什么编码来在 aix 和 ubuntu 系统上看到正确的值

答案1

将环境变量设置LC_CTYPEen_US.UTF-8指示您要在终端上对字符使用 UTF-8 编码的值。 UTF-8 是 Unicode 的一种编码。一般来说,它是 Unix 世界中的现代字符编码标准,并且是 Ubuntu 上的默认值,但可能不是 AIX 上的默认值。

第一个版本支持 UTF-8 语言环境的 AIX是 7.1.2.0。如果您使用的是旧版本,则可能无法在 AIX 上查看 UTF-8 编码的文本。但是,如果您从 Ubuntu 通过 SSH 访问 AIX 计算机,则设置LC_CTYPE=C(或保持未设置)应该适用于简单的程序,例如cat.对于其他程序,例如viless,您会遇到显示故障,因为它们不知道几个字节如何组成一个字符。

或者,如果您只想要显示的字符,您可以使用latin2 又名 ISO-8859-2字符集。在 Ubuntu 上,在终端中,您可以通过运行以下命令切换到使用 latin2

LC_CTYPE=cs_CZ luit

(或者使用任何其他 latin2 语言环境。如果该语言环境不存在,请使用 生成它sudo locale-gen cs_CZ。)

相关内容