私はaixシステムにメッセージを記録するためにlog4j2を使用しています。コマンドを使用すると、ログに次の情報を表示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
環境変数を、端末の文字にUTF-8エンコーディングを使用することを示す値LC_CTYPE
に設定します。en_US.UTF-8
UTF-8はUnicodeのエンコーディングです。通常、これはUnixの世界の最新の文字エンコード標準であり、Ubuntuではデフォルトですが、AIXではデフォルトではない可能性があります。
最初のバージョンUTF-8ロケールをサポートするAIX7.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ロケールを使用してください。そのロケールが存在しない場合はgenerate itを使用してくださいsudo locale-gen cs_CZ
。)