如何将具有不同编码的(Java)文件转换为相同的?

时间:2014-09-11 21:11:39

标签: java eclipse jsp encoding utf-8

我正在使用Eclipse中的一个大型Java Web应用程序,其文件具有不同的编码:一些是UTF-8,另一些是Cp1252,还有一些是ISO-8859-1(JSP&没有区别) #39; s或java源文件,或CSS) - 但我知道每个文件的编码。

我将项目转换为Maven,这是将所有项目转换为UTF-8的绝佳机会。
当然,我不想丢失一个角色(因此全自动转换不适用于此)。

我应该怎么做?有没有一种工具可以帮助我确保我不会失去任何特殊的角色? webapp是意大利语,因此,特别是在JSP中,可能会有很多带重音的字母(可能并不是所有HTML实体都被使用过)。

该项目在Eclipse中,但如果可以使转换更容易,我可以使用外部编辑器。

2 个答案:

答案 0 :(得分:1)

编写转换编码的代码非常容易 - 尽管我希望无论如何都有工具可以完成。简单地:

  • 为现有文件创建一个FileInputStream,并将其包装在InputStreamReader中并使用适当的编码
  • 为新文件创建一个FileOutputStream,并将其包装在OutputStreamWriter中并使用适当的编码
  • 循环读取器,将字符读入缓冲区并写出该缓冲区的内容(与您阅读的字符一样多),直到您读完整个文件
  • 关闭所有资源(使用try-with-resources块自动执行)

前两个步骤也更简单,Files.newBufferedReaderFiles.newBufferedWriter

答案 1 :(得分:0)

可以使用iconv function(我使用LibIconv for Windows)来转换单个文件。

它允许您指定源编码和目标编码,并在不能转换字符时发出警告。

我尝试了几个源文件,并且所有重音字母都在Cp1252中以UTF-8正确转换。