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编码)。

  1. select项目
  2. 右键单击并select属性
  3. select资源 面板上的资源 (在2之后打开的右侧菜单的顶部)
  4. 您可以在资源面板中看到, 文本文件编码 ,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>