使用IBM JDK使用不可映射的字符编译java源代码

时间:2014-07-31 07:11:12

标签: java

我有一个项目,它有很多java源文件。

所有java源文件都将被视为UTF-8编码,但其中一些文件在注释中包含不可映射的UTF-8字符,这些文件由我们团队中的某些成员提交,并且他们对本地项目使用GBK编码。

我想在安装了IBM JDK的AIX系统上使用ant编译它

但是编译任务失败了,因为javac会抛出这样的错误:

xx/xx/XX.java unmappable character for encoding UTF-8

任何简单的解决方案?


修改
我知道为什么会发生错误,并且我知道如何修复单个java源文件的编码问题,我的问题实际上是如何在源文件太多的情况下识别那些文件有编码问题。

1 个答案:

答案 0 :(得分:0)

以下是解决问题的步骤:

由于只有部分源文件包含不可映射的UTF-8字符,因此我们可以通过在使用ant编译时指定编译器参数来增加javac max错误的数量来查找所有此类Java文件:

<compilearg line="-Xmaxerrs 100000" />

在调用ant命令时将错误消息转储到文件中。

ant -buildfile=compile.xml > error.txt

然后你可以使用Notepad ++在输出文件上做一些技巧工作来获取有编码问题的文件列表,然后就可以修复它们了。

  1. 使用正则表达式删除不需要的内容;和
  2. 使用TextFX排序和删除重复的行。