Java中的“无法映射的编码字符”警告
我目前正在编写一个Java项目,当我编译时发出以下警告:
/src/com/myco/apps/AppDBCore.java:439: warning: unmappable character for encoding UTF8 [javac] String copyright = " 2003-2008 My Company. All rights reserved.";
我不确定在date之前如何呈现这个angular色,但是它应该是一个版权符号,并且在警告中显示为一个钻石中的问号。
值得注意的是,这个字符正确地出现在输出工件中,但是这个警告是令人讨厌的,包含这个类的文件有一天可能被一个文本编辑器触及,这个文本编辑器会错误地保存编码。
我怎样才能将这个字符注入到“版权”string中,以便编译器很高兴,并且这个符号被保存在文件中而没有潜在的重新编码问题?
使用“\ uxxxx”转义格式。
根据维基百科 ,版权符号是unicode U + 00A9,所以你的行应该是:
String copyright = "\u00a9 2003-2008 My Company. All rights reserved.";
尝试使用:javac -encoding ISO-8859-1 file_name.java
如果您使用的是Maven,请在编译器插件的configuration中明确地设置<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>
这对我有帮助:
所有你需要做的就是指定一个名为JAVA_TOOL_OPTIONS的环境variables。 如果将此variables设置为-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的上面。
apply plugin: 'java' compileJava {options.encoding = "UTF-8"}
大多数情况下,编译错误出现在unicode(UTF-8编码)文件编译时
javac -encoding UTF-8 HelloWorld.java
也可以将这个编译选项添加到您的IDE:Intellij想法
(文件>设置> Java编译器)添加为额外的命令行参数
-encoding : encoding设置源文件编码名称,如EUC-JP和UTF-8。如果未指定-encoding,则使用平台默认转换器。 ( DOC )
如果你使用eclipse(Eclipse可以为你编写utf8代码,即使你编写utf8字符,编程时也会看到正常的utf8字符,但后台将是utf8编码)。
- select项目
- 右键单击并select属性
- select资源 面板上的资源 (在2之后打开的右侧菜单的顶部)
- 您可以在资源面板中看到, 文本文件编码 ,select其他你想要的
PS:这将确定如果你在代码中的静态值。 例如String test =“İİİİİııııııçççççç”;
我有同样的问题,在java错误消息中报告的字符索引是不正确的。 我缩小到双引号字符之前的报告位置是hex094(取消而不是报价,但表示为一个报价),而不是hex022.只要我交换hex022变种一切都很好。
如果使用命令提示符使用Maven Build,也可以使用以下命令:
mvn -Dproject.build.sourceEncoding=UTF-8
这对我有用 –
<?xml version="1.0" encoding="utf-8" ?> <project name="test" default="compile"> <target name="compile"> <javac srcdir="src" destdir="classes" encoding="iso-8859-1" debug="true" /> </target> </project>