Aix

使用 log4j2 記錄時 aix 系統上的編碼問題

  • August 20, 2015

我正在使用 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 系統上的正確值

將環境變數設置為表示您希望對終端上的字元使用 UTF-8 編碼的值LC_CTYPEen_US.UTF-8UTF-8 是 Unicode 的一種編碼。它通常是 Unix 世界中的現代字元編碼標準,它是 Ubuntu 上的預設值,但它可能不是 AIX 上的預設值。

支持 UTF-8 語言環境的 AIX 的第一個版本是 7.1.2.0。如果您有舊版本,則可能無法在 AIX 上查看 UTF-8 編碼的文本。但是,如果您從 Ubuntu 通過 SSH 訪問 AIX 機器,設置LC_CTYPE=C(或不設置)應該可以使用簡單的程序,例如cat. 對於其他程序,例如vior less,您會遇到顯示故障,因為它們不知道幾個字節如何構成單個字元。

或者,如果您只想要顯示的字元,則可以使用latin2 aka ISO-8859-2字元集。在 Ubuntu 上,在終端中,您可以通過執行命令切換到在 latin2 中工作

LC_CTYPE=cs_CZ luit

(或使用任何其他 latin2 語言環境。如果該語言環境不存在,則使用 . 生成它sudo locale-gen cs_CZ。)

引用自:https://unix.stackexchange.com/questions/224381