125

私は現在、コンパイル時に次の警告を発する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が日付の前に文字をどのようにレンダリングするかはわかりませんが、著作権記号である必要があり、警告にひし形の疑問符として表示されます。

文字が出力アーティファクトに正しく表示されることは注目に値しますが、警告は厄介であり、このクラスを含むファイルは、エンコーディングを誤って保存するテキストエディタによっていつか触れられる可能性があります...

この文字を「著作権」文字列に挿入して、コンパイラが満足し、再エンコードの問題が発生することなくシンボルがファイルに保持されるようにするにはどうすればよいですか?

4

12 に答える 12

99

試してみてください: javac -encoding ISO-8859-1 file_name.java

于 2009-10-24T20:59:58.660 に答える
58

「\uxxxx」エスケープ形式を使用します。

ウィキペディアによると、著作権記号はユニコードU + 00A9であるため、次のように入力する必要があります。

String copyright = "\u00a9 2003-2008 My Company. All rights reserved.";
于 2009-01-21T11:20:51.037 に答える
46

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>
于 2012-05-28T14:27:35.403 に答える
34

これは私にとって役に立ちました:

必要なのは、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/

于 2014-02-13T13:28:49.323 に答える
29

この行をファイル .gradle の Java conf の上に置きます。

apply plugin: 'java'
compileJava {options.encoding = "UTF-8"}   
于 2015-09-13T23:03:22.053 に答える
11

ほとんどの場合、このコンパイル エラーは、Unicode (UTF-8 エンコード) ファイルのコンパイル時に発生します。

javac -encoding UTF-8 HelloWorld.java

また、このコンパイル オプションを IDE に追加することもできます。例: Intellij idea
(File>settings>Java Compiler) add as additional command line parameter

ここに画像の説明を入力

-encoding : encoding EUC-JP や UTF-8 など、ソース ファイルのエンコーディング名を設定します。 -encoding が指定されていない場合は、プラットフォームの既定のコンバーターが使用されます。(ドキュメント)

于 2015-04-05T06:17:35.030 に答える
1

同じ問題が発生し、Javaエラーメッセージで報告された文字インデックスが正しくありませんでした。報告された位置が16進数022ではなく16進数094(引用符ではなくキャンセル、ただし引用符で表される)になる直前の二重引用符文字に絞り込みました。16進数022バリアントに交換するとすぐに、すべて問題ありませんでした。

于 2010-06-22T12:14:13.167 に答える
1

Eclipse を使用している場合 (Eclipse は utf8 文字を記述しても utf8 コードを配置できます。プログラミング時には通常の utf8 文字が表示されますが、背景は utf8 コードになります) ;

  1. プロジェクトを選択
  2. 右クリックして [プロパティ] を選択します
  3. リソース パネル(2. の後に開いた右メニューの上部) でリソースを選択します。
  4. Resource PanelText File Encodingで確認でき、他に必要なものを選択できます

PS :コードで静的な値を使用する場合、これは問題ありません。例 String test = "İİİİİıııııççççç";

于 2009-12-07T07:56:16.383 に答える
1

コマンド プロンプトから Maven Build を使用している場合は、次のコマンドも使用できます。

                    mvn -Dproject.build.sourceEncoding=UTF-8
于 2015-06-24T15:06:15.640 に答える