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++Builder Discussion :

Représentation ASCII des caractères


Sujet :

C++Builder

  1. #1
    Membre éprouvé
    Avatar de bandit boy
    Profil pro
    Inscrit en
    Février 2006
    Messages
    916
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 916
    Points : 1 007
    Points
    1 007
    Par défaut Représentation ASCII des caractères
    Bonjour, j'ai un soucis de représentation ASCII des caractères d'une AnsiString.
    Je m'explique:
    Pour la représentation des caractères "classique" de 0 à 127, comprenant les lettres minuscules, majuscules et les chiffres ainsi que les caractères de ponctuation, il n'y a aucun souci.
    Par contre, et c'est là que ça se corse, pour les caractères de 128 à 255 où se trouve les caractères accentués, je n'obtient pas du tout la même chose entre les tables ASCII que l'on peut trouver sur le net, et ce que Builder me donne.

    Petit exemple: le caractère 'é' est traduit 0xE9 par Builder alors que dans la table ASCII, il vaut 0x82.

    Existe t il une option de langue, de compilation ou une méthode particulière pour obtenir la bonne traduction?

    Merci d'avance

  2. #2
    Membre chevronné
    Avatar de Crayon
    Inscrit en
    Avril 2005
    Messages
    1 811
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 811
    Points : 2 189
    Points
    2 189
    Par défaut
    Citation Envoyé par bandit boy Voir le message
    Petit exemple: le caractère 'é' est traduit 0xE9 par Builder
    Comment obtiens-tu cette valeur?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    unsigned char MyChar = 'é';
    int MyVal = (int)MyChar;
    • Plus un ordinateur possède de RAM, plus vite il peut générer un message d'erreur. - Dave Barry
    • Je n'ai pas peur des ordinateurs. J'ai peur qu'ils viennent à nous manquer. - Isaac Asimov
    • Le code source est comme une belle femme, plus on le regarde, plus on trouve des défauts. - Crayon

  3. #3
    Membre expérimenté
    Avatar de sat83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2004
    Messages
    1 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 040
    Points : 1 307
    Points
    1 307
    Par défaut
    La norme ASCII ne définit que 128 caractères (de 0 à 127).

    Pour les caractères entre 128 et 255, tous dépend de l'encodage utilisé. Donc selon le codage utilisé, une valeur peut représenter un caractère ou un autre.

    Pour un Label par exemple, en modifiant la propriété CharSet de La Font, tu a plusieurs type d'encodage (après ça depend aussi de la police, chaque police pouvant gérer un ou plusieurs CHARSET).

    Extrait de l'aide pour TFontCharset :
    Chaque police Windows supporte un ou plusieurs jeux de caractères. Les jeux de caractères particuliers dépendent de la fonte


    Pour se rendre compte des différence:

    - dans un Label placer "a â ä é è ë ö ù ï î ö" dans la propriété Caption.

    - Choisir la police Arial (qui gère beaucoup de Charset différents)

    - Modifier la propriété CharSet : Les caractères changent selon l'encodage
    Ce que l'on apprend par l'effort reste toujours ancré plus longtemps...

  4. #4
    Membre éprouvé
    Avatar de bandit boy
    Profil pro
    Inscrit en
    Février 2006
    Messages
    916
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 916
    Points : 1 007
    Points
    1 007
    Par défaut
    Merci pour vos tuyaux !
    J'ai réussi à convertir le tout grâce à l'API Windows permettant de faire la manip:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
        unsigned char *Txt;
        Txt = new uchar[Edit15->Text.Length()];
        //strcpy(Txt,Edit15->Text.c_str());      --> garde le type ANSI
        CharToOem(Edit15->Text.c_str(),Txt);//--> converti en ASCII
    Par contre, juste pour info, je ne suis pas d'accord avec toi, sat83, puisque les caractères de 128 à 255 ASCII sont définit dans la table ASCII étendu, ils dépendent juste des machines... voir chez msdn.

  5. #5
    Membre expérimenté
    Avatar de sat83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2004
    Messages
    1 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 040
    Points : 1 307
    Points
    1 307
    Par défaut
    "Le code ASCII étendu n'est pas unique il dépend de la plateforme utilisée"
    Tous dépend du codage utilisé... OEM étant l'un de ses codages.

    Mais l'essentiel c'est que tu ai résolu ton problème!
    Ce que l'on apprend par l'effort reste toujours ancré plus longtemps...

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

Discussions similaires

  1. Afficher le code ASCII des caractères d'un texte
    Par Lulye dans le forum Android
    Réponses: 1
    Dernier message: 14/04/2015, 05h45
  2. Cohérence des caractères ASCII
    Par the-player777 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 30/10/2007, 08h45
  3. Afficher des caractères et leur code ASCII
    Par hamada_10 dans le forum Pascal
    Réponses: 8
    Dernier message: 26/12/2006, 19h38
  4. transcoder des codes ascii en caractères
    Par gillou026 dans le forum Langage
    Réponses: 6
    Dernier message: 06/03/2006, 09h25

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