1 votes

Impossible de compiler le code Java [Unicode Byte Order Mark 65279].

J'ai écrit un simple programme Java avec la fonction gedit éditeur de texte.

public class Example{
    public static void  main (String args [])
    {
    System.out.println("hi yaar");
    }
}

Lorsque j'ai essayé de le compiler sur le terminal, il a généré beaucoup d'erreurs, et je ne sais pas pourquoi. C'est censé fonctionner.

Voici les erreurs :

arvind@arvind-HP-Pavilion-g6-Notebook-PC:~/Documents$ javac Example.java

Example.java:1: error: illegal character: \65279

public class Example{
       ^

Example.java:1: error: class, interface, or enum expected

public class Example{
          ^
Example.java:2: error: class, interface, or enum expected

public static void  main (String args [])
          ^

Example.java:5: error: class, interface, or enum expected

}
^

4 errors

J'ai essayé de faire des recherches sur de nombreux forums, mais je n'ai pas trouvé de réponse. Comment puis-je résoudre ce problème ?

Toute aide est la bienvenue.

Gracias.

2voto

Andy Points 31

illegal character: \65279 Il semble qu'il s'agisse d'un problème d'encodage.

  1. Vérifiez l'encodage de votre fichier de code source : file -bi Example.java
  2. Utiliser l'encodage comme option pour javac , par exemple javac -encoding UTF-8 Example.java

N'oubliez pas non plus que la valeur décimale 65279 correspond à la valeur hexagonale FEFF. C'est ce qu'on appelle la marque d'ordre des octets (BOM) de l'Unicode. En UTF-8, cette information est trompeuse, car il s'agit toujours d'un flux de 8 bits et non de 16 bits.

javac ne peut pas gérer cela. Utilisez donc un autre éditeur, qui ne fait pas ce genre de choses.

BTW : Utiliser de préférence un IDE comme éclipse o netbeans pour la programmation en Java. Cela peut vous protéger de certains problèmes subtils (par exemple, l'encodage des fichiers de propriétés doit être latin-1).

0voto

sudhan kumar Points 1

Ce caractère supplémentaire est généralement placé au début du premier mot du document.

Dans mon code, tous les mots du document sont stockés dans le tableau word[].

Nous pouvons ignorer ce caractère en utilisant :

   if((int)word[0].charAt(0)==65279)
         word[0]=word[0].substring(1);

0voto

Si vous utilisez un IDE, il n'y a aucun problème pour compiler le code. Vous écrivez manuellement le code dans (notepad ,notepad++), vous utilisez l'encodage en UTF-8, puis vous compilez le code.

Sinon, utiliser :

javac -encoding UTF8 yourclassname.java

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X