问题
我正在编写一个Java项目,在编译时发出以下警告:
/src/com/myco/apps/AppDBCore.java:439: warning: unmappable character for encoding UTF8
[javac] String copyright = "� 2003-2008 My Company. All rights reserved.";
我不确定SO会如何在日期之前渲染角色,但它应该是版权符号,并在警告中显示为钻石中的问号。
值得注意的是,角色正确地出现在输出工件中,但警告是令人讨厌的,包含此类的文件可能有一天会被文本编辑器触及,这会错误地保存编码...
如何将此字符注入"copyright"字符串以便编译器满意,并且该符号保留在文件中而没有潜在的重新编码问题?
#1 热门回答(86 赞)
试试:javac -encoding ISO-8859-1 file_name.java
#2 热门回答(49 赞)
使用"\ uxxxx"转义格式。
根据Wikipedia,版权符号为unicode U 00A9,因此你的行应为:
String copyright = "\u00a9 2003-2008 My Company. All rights reserved.";
#3 热门回答(38 赞)
如果你正在使用Maven,请在编译器插件的配置中明确设置<encoding>
,例如
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<encoding>UTF-8</encoding>
</configuration>
</plugin>