
我們正在處理客戶在使用 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_ALL
為en_US.ISO8859-1
或任何適合系統的區域設定es_ES.ISO-8859-1
等。
添加:
export LC_ALL="en_US.ISO-8859-1"
運行 Java 後端的命令檔案應該可以解決問題。