Ant错误:编码Cp1252的不可映射字符

时间:2015-09-04 07:13:01

标签: java ant compilation compiler-errors javac

当我通过ant构建项目时出现以下错误。

ResourceManagerJDBCRAHA.java:40: error: unmappable character for encoding Cp1252  

If a ConnectionManager of type “JDBCxE2|x80? is found, it instantiates the class

这部分代码实际上是我的java文件中的注释,如下所示

/* If a ConnectionManager of type “JDBC” is found, it instantiates the class */

当我为JDBC添加单引号而不是双引号时(见下文)我没有收到此错误

/* If a ConnectionManager of type 'JDBC' is found, it instantiates the class */

以下是我的问题: -

  1. 为什么会这样?
  2. 我可以做些什么来解决这个问题,即保留双引号
  3. 我尝试过添加下面的编码属性来修复问题,但会引发其他问题

    <javac .....  encoding="UTF-8"> .... </javac> 
    error: unmappable character for encoding UTF-8
    

    我更倾向于坚持默认,即不添加编码属性。

1 个答案:

答案 0 :(得分:2)

如果仔细查看该评论,您会发现实际上有两种不同的双引号字符:(“)和(&#34;)。 (我并不完全相信这与您的源代码相符......&#39;因为我无法将其解除错误。)

简单的答案是专门使用ASCII双引号字符。

更复杂的答案是确保您知道文件的字符编码真的是什么,然后在build.xml文件中设置该编码。

  

我更倾向于坚持默认,即不添加编码属性。

这是最好的答案,但它要求您专门使用源代码中默认字符集中的字符。因为你永远无法完全确定编译平台的默认字符集是什么......坚持使用7位ASCII,以及这个双引号字符:(&#34;)。