web-dev-qa-db-fra.com

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

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

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

Lorsque j'ai essayé de le compiler sur le terminal, cela 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 chercher sur beaucoup de forums, mais je n'ai pas trouvé de réponse. Comment puis-je résoudre ça?

Toute aide appréciée.

Merci.

1
arvind

illegal character: \65279, cela ressemble à un problème d'encodage.

  1. Vérifiez l'encodage de votre fichier de code source: file -bi Example.Java
  2. Utilisez le codage comme option pour javac, par ex. javac -encoding UTF-8 Example.Java

N'oubliez pas non plus que le nombre décimal 65279 correspond à la valeur hexadécimale FEFF. Ce qui est connu sous le nom Unicode Byte Order Mark (BOM). En UTF-8, ces informations sont trompeuses, 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 un tel traitement cruel.

BTW: Utilisez mieux un IDE comme Eclipse ou netbeans pour la programmation en Java. Cela peut vous protéger de certains problèmes subtils (par exemple, le codage des fichiers de propriétés doit être en latin-1).

2
H.-Dirk Schmitt

Si vous utilisez un IDE, la compilation du code ne pose aucun problème. Vous écrivez manuellement le code (bloc-notes, bloc-notes ++), utilisez l'encodage encoder en UTF-8, puis vous compilez le code.

Sinon, utilisez:

javac -encoding UTF8 yourclassname.Java
0
janardhan randhi

Ce caractère supplémentaire sera généralement au début du premier mot de la doc.

Dans mon code, tous les mots de la doc sont stockés dans le tableau Word [].

Nous pouvons ignorer ce personnage en utilisant:

   if((int)Word[0].charAt(0)==65279)
         Word[0]=Word[0].substring(1);
0
sudhan kumar