1

我正在使用 java 读取一个文本文件,其中有一些特殊字符,如Yen(¥). 我在读取文件时没有指定任何编码/字符集,并且在 Windows 中工作正常。但是,如果我在 unix 机器上部署相同的内容,则将¥替换为“ ?”。现在我要指定 charset windows-1252 来避免这个问题。可以windows-1252unix/linux盒子上工作吗?我的 unix box 字符集设置为“ utf-8”。我在下面的代码中使用:

LineIterator iterator =FileUtils.lineIterator(*filename*,"Windows-1252");
4

2 回答 2

2

该类StandardCharsets为您提供了“保证在 Java 平台的每个实现上都可用”的编码/字符集列表。

此列表不包含 Windows 编码,但适用于 Windows、Mac 和 Linux 上的大多数常见 Java 版本Cp1251

请注意,当它不可用时,您会得到一个UnsupportedCharsetExceptionUnsupportedEncodingException,因此上面的代码是安全的(在某种意义上它不会产生垃圾)。

如果您想真正安全,常用的方法是在您的项目中仅使用 UTF-8 编码的数据。

于 2013-09-25T10:21:20.527 回答
1

如果我正确理解了您的问题,我通常会通过使用文本编辑器将文本文件保存为 UTF-8 编码来解决此问题,然后在从 Java 程序打开该文件时再次指定 UTF-8。

于 2013-09-25T18:01:43.173 回答