我们正在处理客户在其本地 Windows 机器上生成的文件,这些机器使用 CP-1252 字符集。有时,在我们的后端(在 CentOS 上运行)处理其中一个文件时,我们会收到运行时错误(它是 Java 后端,所以RuntimeExceptions
)。如果我们远程登录到服务器并重命名文件(使用 UTF-8)并重新运行它,文件处理会非常顺利。
有什么方法可以将 CP-1252“添加”到 CentOS 的可用字符集中以避免这种情况发生?
答案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 后端的命令文件应该可以解决问题。