如何让Java使用正确的字符集?

时间:2012-08-23 14:02:20

标签: java character-encoding centos cp1252

我们的服务器在CentOS上运行,我们的Java后端有时必须使用CP-1252处理最初在Windows机器上(由我​​们的一个客户端)生成的文件,但在95%以上的用例中,我们正在处理UTF-8文件。

我的问题:如果我们知道某些文件总是是UTF-8,而其他文件总是是CP-1252,是否可以在Java中指定用于在每个文件中读取的字符集?如果是这样的话:

  • 我们是否需要在系统级别做任何事情才能将CP-1252添加到CentOS?如果是这样,这涉及到什么?
  • 我们将使用哪些Java对象在每个文件的基础上应用正确的编码?

提前致谢!

2 个答案:

答案 0 :(得分:2)

您需要做的就是在使用XXXReader(InputStream in, Charset cs)时指定写入原始文件的字符集/编码。对于例如看看InputStreamReader

答案 1 :(得分:1)

  

我的问题:如果我们知道某些文件将始终为UTF-8,而其他文件将始终为CP-1252,是否可以在Java中指定用于在每个文件中读取的字符集?

假设您负责读取文件的代码,那应该没问题。创建一个FileInputStream,然后将其包装在指定相关字符编码的InputStreamReader中。

  

我们是否需要在系统级别做任何事情才能将CP-1252添加到CentOS?如果是这样,这涉及到什么?

这取决于JRE支持的内容。我从来没有使用过CentOS,所以我不知道是否可能会将相关编码作为JRE的一部分。您可以使用Charset.isSupported进行检查,Charset.availableCharsets列出可用的内容。