it-swarm.com.de

Warnung in Java

Ich arbeite derzeit an einem Java Projekt, das beim Kompilieren die folgende Warnung ausgibt:

/src/com/myco/apps/AppDBCore.Java:439: warning: unmappable character for encoding UTF8
    [javac]         String copyright = "� 2003-2008 My Company. All rights reserved.";

Ich bin nicht sicher, wie SO das Zeichen vor dem Datum rendern soll, aber es sollte ein Copyright-Symbol sein und wird in der Warnung als Fragezeichen in einer Raute angezeigt.

Es ist erwähnenswert, dass das Zeichen im Ausgabe-Artefakt korrekt angezeigt wird, aber die Warnungen sind störend und die Datei, die diese Klasse enthält, könnte eines Tages von einem Texteditor berührt werden, der die Codierung falsch speichert ...

Wie kann ich dieses Zeichen in den "copyright" -String einfügen, damit der Compiler zufrieden ist und das Symbol in der Datei erhalten bleibt, ohne dass potenzielle Neucodierungsprobleme auftreten?

103
seanhodges

Verwenden Sie das Escape-Format "\ uxxxx".

Laut Wikipedia ist das Copyright-Symbol Unicode U + 00A9, daher sollte Ihre Zeile lauten:

String copyright = "\u00a9 2003-2008 My Company. All rights reserved.";
52
Jon Skeet

Versuchen Sie es mit: javac -encoding ISO-8859-1 file_name.Java

89
Fernando Nah

Wenn Sie Maven verwenden, stellen Sie <encoding> explizit in der Konfiguration des Compiler-Plugins, z.

<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>
41
Thomas Leonard

Das hat mir geholfen:

Sie müssen lediglich eine Umgebungsvariable mit dem Namen Java_TOOL_OPTIONS angeben. Wenn Sie diese Variable auf -Dfile.encoding = UTF8 setzen, werden diese Informationen bei jedem Start einer JVM abgerufen.

Quelle: http://whatiscomingtomyhead.wordpress.com/2012/01/02/get-rid-of-unmappable-character-for-encoding-cp1252-once-and-for-all/

30
nightlyop

setzen Sie diese Zeile in Ihre Datei .gradle über das Java conf.

apply plugin: 'Java'
compileJava {options.encoding = "UTF-8"}   
20
Alobes5

Meistens tritt dieser Kompilierungsfehler beim Kompilieren von Unicode-Dateien (UTF-8-codiert) auf

javac -encoding UTF-8 HelloWorld.Java

sie können diese Kompilierungsoption auch zu Ihrer IDE ex: Intellij idea hinzufügen
(Datei> Einstellungen> Java Compiler) als zusätzlichen Befehlszeilenparameter hinzufügen

enter image description here

- encoding: encoding Legt den Namen der Quelldatei-Codierung fest, z. B. EUC-JP und UTF-8. Wenn -encoding nicht angegeben wird, wird die Plattform-Standardeinstellung verwendet Konverter verwendet wird. ( DOC )

7
Alupotha

Gradle Schritte

Wenn Sie Gradle verwenden, finden Sie die Zeile, in der das Java Plugin angewendet wird:

apply plugin: 'Java'

Stellen Sie dann die Kodierung für die Kompilierungsaufgabe auf UTF-8 ein:

compileJava {options.encoding = "UTF-8"}   

Wenn Sie Unit-Tests haben, möchten Sie diese wahrscheinlich auch mit UTF-8 kompilieren:

compileTestJava {options.encoding = "UTF-8"}

Gesamtes Gradle-Beispiel

Dies bedeutet, dass der Gradle-Code insgesamt ungefähr so ​​aussehen würde:

apply plugin: 'Java'
compileJava {options.encoding = "UTF-8"}
compileTestJava {options.encoding = "UTF-8"}
4
Luke Machowski

Das hat bei mir funktioniert -

    <?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>
2
Dxx0

Wenn Sie Maven Build von der Eingabeaufforderung aus verwenden, können Sie auch den folgenden Befehl verwenden:

                    mvn -Dproject.build.sourceEncoding=UTF-8
1
5122014009

Wenn Sie Eclipse verwenden (Eclipse kann utf8-Code für Sie eingeben, auch wenn Sie ein utf8-Zeichen schreiben. Beim Programmieren sehen Sie ein normales utf8-Zeichen, aber der Hintergrund ist utf8-Code).

  1. Wählen Sie Projekt
  2. Klicken Sie mit der rechten Maustaste und wählen Sie Eigenschaften
  3. Wählen Sie Ressource in Ressourcenbereich (Oben rechts im Menü, das nach 2. geöffnet wurde)
  4. Sie können in Resource Panel, Text File Encoding andere auswählen, die Sie möchten

P.S: Dies ist in Ordnung, wenn Sie einen statischen Wert im Code haben. Zum Beispiel String test = "İİİİııııııççççç";

1
baybora.oren

Ich hatte das gleiche Problem, bei dem der in der Java Fehlermeldung angegebene Zeichenindex falsch war. Ich habe ihn auf doppelte Anführungszeichen eingegrenzt, kurz bevor die gemeldete Position hex 094 ist (abbrechen statt Zitat, aber als Zitat dargestellt) statt Hex 022. Sobald ich gegen die Hex 022-Variante getauscht hatte, war alles in Ordnung.

1
Kelvin Goodson