我正在编写一个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"字符串,以便编译器满意,并且该符号保留在文件中而没有潜在的重新编码问题?
试试:javac -encoding ISO-8859-1 file_name.java
使用"\ uxxxx"转义格式.
根据维基百科,版权符号为unicode U + 00A9,因此您的行应为:
String copyright = "\u00a9 2003-2008 My Company. All rights reserved.";
如果您正在使用Maven,请
在编译器插件的配置中明确设置,例如
org.apache.maven.plugins maven-compiler-plugin 2.3.2 UTF-8
这对我有帮助:
您需要做的就是指定一个名为JAVA_TOOL_OPTIONS的环境变量.如果将此变量设置为-Dfile.encoding = UTF8,则每次启动JVM时,它都会获取此信息.
资料来源:http://whatiscomingtomyhead.wordpress.com/2012/01/02/get-rid-of-unmappable-character-for-encoding-cp1252-once-and-for-all/
把这行放在Java conf上面的yor文件.gradle中.
apply plugin: 'java' compileJava {options.encoding = "UTF-8"}
大多数情况下,编译错误是在unicode(UTF-8编码)文件编译时出现的
javac -encoding UTF-8 HelloWorld.java
您还可以将此编译选项添加到IDE ex:Intellij idea
(文件>设置> Java编译器)添加为附加命令行参数
-encoding : encoding设置源文件编码名称,例如EUC-JP和UTF-8 ..如果未指定-encoding,则使用平台默认转换器.(DOC)