如何將CP-1252加入CentOS

如何將CP-1252加入CentOS

我們正在處理客戶在使用 CP-1252 字元集的本機 Windows 電腦上產生的檔案。有時,在我們的後端(在 CentOS 上運行)中處理這些文件之一時,我們會遇到運行時錯誤(它是 Java 後端,所以RuntimeExceptions)。如果我們遠端存取伺服器並重新命名該檔案(使用 UTF-8)並重新運行它,則該檔案處理得非常好。

有沒有什麼方法可以將 CP-1252「添加」到 CentOS 的可用字元集中,從而阻止這種情況發生?

答案1

查看來自 Oracle 的有關 Java 行為的錯誤報告bug_id=4733494與“預設區域設定”相關。根據 Sun/Oracle 的這個 bug 報表(實際上 Sun/Oracle 表示這種行為其實不是一個 bug,而是 Java 的設計方式):

在 1.4 之前的 JDK 版本中,我們始終將「C」區域設定強制為 ISO8859-1 字元集。在版本 1.4 及更高版本中,我們支援「C」語言環境,該語言環境需要限制為 7 位元 ASCII。

建議將環境變數設定LC_ALLen_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

相關內容