web-dev-qa-db-fra.com

"caractère illégal:\65279" lors de la compilation Maven bien qu'il soit défini sur UTF-8

J'essaie de compiler un projet Maven Java avec des fichiers enregistrés au format UTF-8 qui ont un BOM , mais je reçois une erreur de caractère non conforme du caractère BOM dans malgré le fait que I Le project.build.sourceEncoding ainsi que la encoding du maven-compiler-plugin sont définis sur UTF-8

Est-ce que je manque un paramètre supplémentaire? Puis-je même le faire compiler sans supprimer la nomenclature (aucune modification ne peut être apportée à la source, mais I can modifier le POM)?


L'erreur:

Java: C:\code\main\src\test\Java\net\initech\finance\FinanceTest.Java: 1: caractère non autorisé:\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>
11
ArtB

S'il s'agit de UTF-8 et non d'UTF-16, la nomenclature ne sert à rien. Pourquoi est-il mis là? En outre, seul Java se plaint ici - pas Maven.

Vérifier JDK-4508058: Le codage UTF-8 ne reconnaît pas la nomenclature initiale qui est liée.

11
Hut8

1.Fermez votre projet.

2. Essayez d’ouvrir votre fichier avec Notepad ++, puis passez à «UTF-8 sans nomenclature».

3.Rouvrez votre projet à nouveau.

8
JasonChiu

Cela m'est arrivé après avoir ouvert une classe Java à l'aide du bloc-notes. Cela a changé le codage du fichier. 

Voici un truc simple que j'ai fait:

  1. Ouvrez votre classe depuis Android Studio/Eclipse
  2. Ctrl + A puis Ctrl + X
  3. Supprimer votre classe vide maintenant
  4. Créer une nouvelle classe avec le même nom
  5. Ctrl + V le code
  6. Terminé
5
Theodhor Pandeli

=, Regardez la différence entre les signes d'égalité. Le droit est utilisé pour le type anglais normal, mais le plus à gauche est généralement utilisé pour les langues chinoises.

0
Sheldon