问题

我正在编写一个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>

原文链接