CentOSにCP-1252を追加する方法

CentOSにCP-1252を追加する方法

私たちは、クライアントが CP-1252 文字セットを使用するローカル Windows マシンで生成したファイルを処理しています。ときどき、これらのファイルの 1 つをバックエンド (CentOS で実行) で処理しているときに、ランタイム エラーが発生します (Java バックエンドであるためRuntimeExceptions)。サーバーにリモート接続して、ファイル名を変更 (UTF-8 を使用) し、再度実行すると、ファイルは完全に正常に処理されます。

この問題が発生しないように、CentOS の使用可能な文字セットに CP-1252 を「追加」する方法はありますか?

答え1

OracleのJavaの動作に関するバグレポートをご覧ください。バグID=4733494「デフォルト ロケール」に関連しています。Sun/Oracle のこのバグ レポートによると (実際には Sun/Oracle は、この動作はバグではなく、Java の設計上の問題であると述べています)、次のようになります。

JDK 1.4 より前のバージョンでは、常に「C」ロケールを ISO8859-1 文字セットに強制していました。リリース 1.4 以降では、7 ビット ASCII への制限を必要とする「C」ロケールをサポートしています。

LC_ALL環境変数を に設定するen_US.ISO8859-1か、システムの適切なロケールなどを設定することをお勧めしますes_ES.ISO-8859-1

追加:

export LC_ALL="en_US.ISO-8859-1"

Java バックエンドを実行するコマンド ファイルにより、問題は解決されるはずです。

これは SO の質問にも記載されています:https://stackoverflow.com/questions/5663709/how-to-fix-java-when-if-refused-to-open-a-file-with-special-charater-in-filename

関連情報