IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Java Discussion :

Unclosed character literal


Sujet :

Java

  1. #1
    Membre éclairé Avatar de Chou-ette
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2018
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2018
    Messages : 57
    Par défaut Unclosed character literal
    Bonjour à tous,

    Depuis ce matin je rencontre une erreur qui n'était jamais apparue jusque la alors que ce fichier est présent et écrit ainsi depuis des années sans que personne n'y touche :

    Je vous cite le passage en question :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    switch (c) {
        case 'À' :
    	return 'A';
    Je travaille (de force ) avec Java 8, impossible de build le projet suite à une erreur Unclosed character literal sur tous les case du switch cité au dessus, ils sont tous du même format. "c" est bien un char, le single quote est nécessaire dans ce cas si je ne m'abuse ? Auriez-vous une idée de l'origine du problème ?

    J'ai eu des soucis d'encodage récemment, pensez-vous que cela pourrait être lié ?

    En vous remerciant,

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 571
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 571
    Par défaut
    Citation Envoyé par Chou-ette Voir le message
    J'ai eu des soucis d'encodage récemment, pensez-vous que cela pourrait être lié ?
    J'ai soupçonné un problème d'encodage avant même de lire ceci.

    Ici ton erreur arrive quand tu essaies de fournir un caractère accentué. Or un truc avec les caractères accentués, c'est qu'avec certains encodages, comme utf-8, ils prennent plusieurs octets. Alors que les caractères "normaux" genre lettres sans accent, ne prennent qu'un octet.

    Mais avec d'autres encodages, comme latin-1, tous les caractères prennent exactement un octet (du moins tous ceux que l'encodage peut gérer.)

    Conclusion, là on a un cas typique de :
    - fichier .java encodé en utf-8, donc dont les caractères accentués prennent plusieurs octets,
    - dont le compilateur croit qu'il est encodé en latin-1, donc dont tous les caractères prennent exactement 1 octet.

    Du coup quand il voit le caractère 'À' dans le code source, il l'interprète en fait comme 'À'

    ... Et cela fait deux caractères entre des single-quotes, ce qui est invalide.

    Le problème donc, est que ton fichier .java est en utf-8, mais que le compilateur croit qu'il est en autre chose, genre latin-1. Il va falloir corriger comment tu appelles le compilateur.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre Expert Avatar de Uther
    Homme Profil pro
    Tourneur Fraiseur
    Inscrit en
    Avril 2002
    Messages
    4 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Tourneur Fraiseur

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 656
    Par défaut
    En effet ça pourrait être lié a l'encodage. Il est fort probable que le À pose souci et qu'il face que l'apostrophe fermant n'est pas reconnu. Tu peux soit changer l'encodage du fichier, le spécifier au compilateur, ou remplacer les caractères non ASCII par leur séquence d'échappement Unicode.

  4. #4
    Membre éclairé Avatar de Chou-ette
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2018
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2018
    Messages : 57
    Par défaut
    Depuis ma question et avant de revenir lire ce fil, j'ai justement essayé de triturer l'encodage. Je n'avais pas la cause réelle du problème très bien expliquée par thelvin, mais je ne voyais vraiment pas d'autres raisons que l'encodage justement.

    J'ai pu à nouveau build le projet en passant l'encodage en windows-1252, contre UTF-8 jusque la.

    Arrivé récemment sur ce projet qui lui ne date pas d'hier, je n'ai pas prêté attention à l'encodage et je suppose que mon IDE a forcé (ou je l'ai fait) de l'UTF-8 par défaut, alors que le projet reposait sur du windows-1252. Windows-1252 codé sur 1 octet comme indiqué dans sa doc.

    Merci à tous !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Exception Unclosed character class near index
    Par youza dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 01/09/2011, 16h36
  2. Problème avec accents et CHARACTER SET ISO8859_1
    Par kinda dans le forum InterBase
    Réponses: 13
    Dernier message: 30/10/2003, 16h49
  3. IB 6.0.1 - Win XP - Character Set
    Par SuperTotor dans le forum InterBase
    Réponses: 4
    Dernier message: 03/06/2003, 21h25
  4. [XMLRAD] invalid character type
    Par Sylvain James dans le forum XMLRAD
    Réponses: 4
    Dernier message: 10/12/2002, 08h47
  5. character set // Nls_lang
    Par fopicht dans le forum Oracle
    Réponses: 2
    Dernier message: 23/05/2002, 13h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo