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 系統上的正確值
將環境變數設置為表示您希望對終端上的字元使用 UTF-8 編碼的值
LC_CTYPE
。en_US.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
orless
,您會遇到顯示故障,因為它們不知道幾個字節如何構成單個字元。或者,如果您只想要顯示的字元,則可以使用latin2 aka ISO-8859-2字元集。在 Ubuntu 上,在終端中,您可以通過執行命令切換到在 latin2 中工作
LC_CTYPE=cs_CZ luit
(或使用任何其他 latin2 語言環境。如果該語言環境不存在,則使用 . 生成它
sudo locale-gen cs_CZ
。)