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

 C++ Discussion :

Problème avec Encoding


Sujet :

C++

  1. #1
    Membre averti
    Homme Profil pro
    Ingénierie en automatisation et systèmes intelligents
    Inscrit en
    Septembre 2008
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénierie en automatisation et systèmes intelligents
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2008
    Messages : 40
    Par défaut Problème avec Encoding
    Bonjour,

    Voici mon problème :








    Comment faire pour que ce que j'écris soit ce qui sera affiché ? Mon clavier est 'Anglais (Canada)'.

    Merci.

  2. #2
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Par défaut
    Sous Windows, il y a trois jeux de caractères qui cohabitent au sein du système : OEM, ANSI et Unicode.
    OEM et ANSI sont variables et dépendent du Windows en question. OEM est utilisé pour le terminal, ANSI pour tout le reste.
    Unicode a été rajouté ensuite.

    Donc le problème, manifestement, c'est que ton fichier source est écrit en ANSI, qui doit être du Windows-1252 (similaire à de l'ISO-8859-1) alors que ton terminal affiche de l'OEM (qui doit être de l'IBM 850).

    Il faut donc convertir ton texte dans le bon jeu de caractères, soit à l'exécution soit dans ton code.

  3. #3
    Membre averti
    Homme Profil pro
    Ingénierie en automatisation et systèmes intelligents
    Inscrit en
    Septembre 2008
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénierie en automatisation et systèmes intelligents
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2008
    Messages : 40
    Par défaut
    Ok, merci, mais comment dois-je faire cela ?

    C'est un travail à remettre, alors j'aimerais bien que le texte dans le code source soit aussi compréhensible que le texte affiché dans la console à moins que ce soit impossible. Alors, il faudrait tout simplement que je n'utilise pas les caractères pour faire des encadrés et que je ne mette pas d'accent sur les lettres.

    À moins peut-être que je crée l'exécutable avec la source qui a des caractères bizarres, mais qu'à la console tout est parfait et que je fournisse le code source que j'ai écrit avec les bons caractères, mais non compilé.

    Je ne sais si je suis clair, désolé...

    Merci.

  4. #4
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 391
    Par défaut
    Utilise wprintf() /putws() et préfixe tes chaînes avec un L majuscule:
    Code C++ : Sélectionner tout - Visualiser dans une fenêtre à part
    wprintf(L"Médinoc\n");

    Note: Ça ne marche pas sous Visual 6, qui s'arrêtera au "é".
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  5. #5
    Membre averti
    Homme Profil pro
    Ingénierie en automatisation et systèmes intelligents
    Inscrit en
    Septembre 2008
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénierie en automatisation et systèmes intelligents
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2008
    Messages : 40
    Par défaut
    Malheureusement, ça ne semble pas fonctionner.

    Je me demandais aussi si d'un ordinateur à l'autre, les caractères affichés dans le code pourraient être différents ? Et pour ce qui est des caractères affichés dans la console ?

    Merci.

  6. #6
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Par défaut
    Bah ce sera différent sur un Windows qui utilise un autre encodage OEM, oui...
    Par contre je me suis trompé, c'est CP437 en Europe de l'Ouest/États-Unis/etc.

  7. #7
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 391
    Par défaut
    @loufoque: Non tu ne t'es pas trompé pour l'Europe de l'Ouest: C'est bien CP850.

    Par contre, c'est CP437 aux États-Unis, ce qui fait que nous avons certains box-drawing characters en moins qu'aux USA (notamment, tous les BDC "mixtes" (contenant à la fois un trait simple et un trait double) sont absents en France).
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  8. #8
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 444
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 444
    Par défaut
    Citation Envoyé par TheReveller Voir le message
    Malheureusement, ça ne semble pas fonctionner.

    Je me demandais aussi si d'un ordinateur à l'autre, les caractères affichés dans le code pourraient être différents ? Et pour ce qui est des caractères affichés dans la console ?

    Merci.
    Ça fait des lustres que je n'ai plus eu à faire cela mais vois si un « chcp 437 » tapé dans la console fonctionne encore. Mais à mon avis, cela ne règlera que partiellement le problème. Tu peux aussi regarder ceci :

    http://psydk.org/archives/2004-01-20...e-sous-windows

    Il y est fait état de SetConsoleOutputCP(), mais ce n'est évidemment pas portable.

    Si tu veux être - presque - sûr d'avoir quelque chose qui passe de la même façon partout en mode console, reste à l'ASCII de base. C'est moins joli, mais c'est plus sûr.

Discussions similaires

  1. [DisplayTag] Problème d'encoding UTF-8 avec export
    Par Fr@ncky dans le forum Taglibs
    Réponses: 19
    Dernier message: 04/06/2015, 08h48
  2. Probléme avec les caractéres speciaux et encoding
    Par parou dans le forum Général Java
    Réponses: 8
    Dernier message: 29/01/2009, 12h47
  3. Problème avec ffmpeg pour encoder des images Recherche :
    Par hppp01 dans le forum Applications et environnements graphiques
    Réponses: 1
    Dernier message: 15/12/2008, 09h04
  4. Problème d'encoding avec SQL Server Management Studio
    Par Maskime dans le forum MS SQL Server
    Réponses: 0
    Dernier message: 06/06/2008, 17h38
  5. Réponses: 7
    Dernier message: 27/04/2006, 16h51

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