![使用log4j2登录时aix系统上的编码问题](https://linux22.com/image/71383/%E4%BD%BF%E7%94%A8log4j2%E7%99%BB%E5%BD%95%E6%97%B6aix%E7%B3%BB%E7%BB%9F%E4%B8%8A%E7%9A%84%E7%BC%96%E7%A0%81%E9%97%AE%E9%A2%98.png)
我正在使用 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_CTYPE
为en_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
.对于其他程序,例如vi
或less
,您会遇到显示故障,因为它们不知道几个字节如何组成一个字符。
或者,如果您只想要显示的字符,您可以使用latin2 又名 ISO-8859-2字符集。在 Ubuntu 上,在终端中,您可以通过运行以下命令切换到使用 latin2
LC_CTYPE=cs_CZ luit
(或者使用任何其他 latin2 语言环境。如果该语言环境不存在,请使用 生成它sudo locale-gen cs_CZ
。)