“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é à
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
Donc la question est
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
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
Vous devez vous connecter pour publier un commentaire.
Si c'est de l'UTF-8 et pas en UTF-16, la NOMENCLATURE ne sert à rien du tout. Pourquoi est-il là? En outre, seulement le Java est de se plaindre ici, pas de Maven.
Découvrez JDK-4508058 : l'encodage UTF-8 ne reconnaît pas les initiales de la NOMENCLATURE
qui est lié.
javac
et de ne pas essayer de lire un fichier par l'intermédiaire de l'API Java.Re: "la NOMENCLATURE sert à rien du tout. Pourquoi est-il là?": Cette quasi-convention a été introduit par Microsoft, dans son bloc-notes de l'éditeur de texte, comme un moyen de distinguer l'UTF-8 à partir d'autres encodages. (Évidemment, ce n'est pas le but, à l'origine que les Nomenclatures sont destinés, mais il n'est pas totalement fou.)
OriginalL'auteur Hut8
1.Fermez votre projet.
2.Essayez d'ouvrir votre fichier par notepad++,et de passer en UTF-8 sans BOM'.
3.Rouvrez votre projet de nouveau.
Vous devez utiliser "Convertir en UTF-8 sans BOM" dans notepad++.
OriginalL'auteur JasonChiu
Ce qui m'est arrivé après que j'ai ouvert une classe Java à l'aide du bloc-notes. Cela a changé l'Encodage du fichier.
Un simple truc que j'ai fait, c'est ceci:
OriginalL'auteur Theodhor Pandeli
==, jetez un oeil à la différence du signe égal. Celui de droite est utilisée pour le type anglais, mais la gauche plus long est généralement utilisé pour les langues Chinoises.
OriginalL'auteur Sheldon