“caractère illégal: \65279” lors de la compilation Maven en dépit d'être mis à l'UTF-8

Je suis en train de compiler un projet Java avec Maven fichiers enregistrés en UTF-8 qui ont un NOMENCLATURE, mais je reçois un caractère illégal d'erreur à partir de la NOMENCLATURE de caractère dans le malgré je avoir à la fois la project.build.sourceEncoding ainsi que la encoding de la maven-compiler-plugin ensemble de UTF-8.

Me manque un paramètre supplémentaire?
Puis-je encore obtenir ce à compiler sans retrait de la NOMENCLATURE (pas le droit de faire tout changement à la source, mais je peut modifier la POM)?


L'erreur:

java: C:\code\main\src\test\java\net\initech\finance\FinanceTest.java:1: caractère illégal: \65279

La propriété:

<properties>
    ...
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    ...
</properties>

Le plugin:

<build>
    <plugins>
        <plugin>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.1</version>
            <configuration>
                <encoding>UTF-8</encoding>
            </configuration>
        </plugin>
    </plugins>
</build>
Double Possible de la Compilation (javac) un encodés en utf-8 du code source Java avec une NOMENCLATURE ou Comment compiler un fichier source de java, qui est codé en “UTF-8”?. (Il n'est pas vraiment un Maven question: Maven est un réussi à dire au compilateur d'interpréter le code source en tant que UTF-8, sinon il ne serait pas à même de savoir que le caractère illégal est \65279.)
Mais Maven a été mis en UTF-8 alors pourquoi n'est-il pas passé à javac correctement? C'est un Maven, sauf si c'est un javac bug. Pas un doublon car j'utilise Maven pour le faire et que vous avez défini Maven dire javac pour traiter le code en UTF-8.
Le fait que vous avez Maven dire au compilateur que le code source en tant que UTF-8, au lieu de dire les choses afin de vous-même, ne change rien. Le problème, c'est que votre code source, s'il est interprété comme de l'UTF-8, n'est pas valide Java code source. (C'est seulement valide Java code source s'il est interprété comme de l'UTF-8 avec BOM, ce qui n'est pas un codage qui javac prend en charge.)
Donc la question est javac ne prend pas en charge UTF=8 qui permet de manière optionnelle pour une NOMENCLATURE. Aussi l'autre question n'a qu'une seule réponse, et il n'est pas accepté, et qui n'est pas expliqué si difficile d'appeler cela un double.
Le standard Unicode vraiment indique seulement que l'une NOMENCLATURE est (à contrecœur) autorisé à l'UTF-8 comme encodage signature, quand il n'y a pas de protocole de niveau supérieur en spécifiant l'encodage. Évidemment, ce n'est pas le cas ici, puisque vous êtes explicitement dire javac que l'encodage est UTF-8.

OriginalL'auteur ArtB | 2013-07-09