私は現在、コンパイル時に次の警告を発している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が日付の前にどのように文字をレンダリングするかわかりませんが、著作権記号である必要があり、警告の中で菱形の疑問符として表示されます。
文字が出力アーティファクトに正しく表示されることは注目に値しますが、警告は迷惑であり、このクラスを含むファイルは、エンコーディングを誤って保存するテキストエディタによっていつか変更される可能性があります...
この文字を「著作権」文字列に挿入すると、コンパイラが満足し、再エンコードの問題が発生することなくシンボルがファイルに保存されます。
「\ uxxxx」エスケープ形式を使用します。
Wikipedia によると、著作権記号はUnicode U + 00A9であるため、行は次のようになります。
String copyright = "\u00a9 2003-2008 My Company. All rights reserved.";
試してください:javac -encoding ISO-8859-1 file_name.Java
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>
これは私を助けました:
必要なことは、Java_TOOL_OPTIONSという環境変数を指定することだけです。この変数を-Dfile.encoding = UTF8に設定すると、JVMが起動するたびにこの情報が取得されます。
この行をJava confの上のyorファイル.gradleに入れます。
apply plugin: 'Java'
compileJava {options.encoding = "UTF-8"}
ほとんどの場合、このコンパイルエラーはunicode(UTF-8エンコード)ファイルのコンパイル時に発生します
javac -encoding UTF-8 HelloWorld.Java
また、このコンパイルオプションをIDEに追加できます例:Intellij idea
(ファイル>設定> Javaコンパイラ)追加のコマンドラインパラメータとして追加
-encoding:encodingソースファイルのエンコーディング名(EUC-JPやUTF-8など)を設定します。-encodingが指定されていない場合、プラットフォームのデフォルトコンバーターが使用されます。 ( DOC )
Gradleを使用している場合は、Javaプラグインを適用する行を見つけることができます。
apply plugin: 'Java'
次に、コンパイルタスクのエンコーディングをUTF-8に設定します。
compileJava {options.encoding = "UTF-8"}
ユニットテストがある場合は、おそらくUTF-8でコンパイルすることもできます。
compileTestJava {options.encoding = "UTF-8"}
これは、全体的なgradleコードが次のようになることを意味します。
apply plugin: 'Java'
compileJava {options.encoding = "UTF-8"}
compileTestJava {options.encoding = "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>
コマンドプロンプトからMaven Buildを使用している場合は、次のコマンドも使用できます。
mvn -Dproject.build.sourceEncoding=UTF-8
Eclipseを使用する場合(Eclipseはutf8文字を記述してもutf8コードを配置できます。プログラミング時に通常のutf8文字が表示されますが、背景はutf8コードになります)。
P.S:これは、コード内の静的な値であれば問題ありません。たとえば、String test = "İİİİİııııııççççç";
同じ問題があり、Javaエラーメッセージで報告された文字インデックスが正しくありませんでした。報告された位置が16進数022の代わりに16進数094(引用ではなくキャンセル、引用として表される)になる直前の二重引用文字に絞り込みました。