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 :

Vous utilisez ascii ? ou autre ?


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Homme Profil pro
    root
    Inscrit en
    Janvier 2013
    Messages
    174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : root

    Informations forums :
    Inscription : Janvier 2013
    Messages : 174
    Par défaut Vous utilisez ascii ? ou autre ?
    Salut à tous.
    Je suis vraiment très curieux de savoir si vous développez vos applications en ascii ou vous utilisez wide ou autres ?

    Étant débutant.
    Sur une simple application en wide je vois que mon code ressemble en rien au code ascii, partout des changements de nom dans les fonctions, on dirait presque un autre langage.

    Je viens de voir uchar, ça à l'aire pas mal, on reste plus sur la syntax simple de C.

  2. #2
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    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 395
    Par défaut
    Sous Windows, je suis en TCHAR partout, avec les options réglées pour que ça fasse du Wide.
    Hors de Windows, je suis généralement en ASCII étendu, mais vu que de plus en plus de systèmes unixoïdes tournent en UTF-8, il faudrait que je fasse ça aussi (prendre des dispositions spéciales pour les troncatures de chaînes au milieu d'un codepoint, etc.).
    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.

  3. #3
    Membre très actif
    Homme Profil pro
    root
    Inscrit en
    Janvier 2013
    Messages
    174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : root

    Informations forums :
    Inscription : Janvier 2013
    Messages : 174
    Par défaut
    Ce qui est bien pour les français ansi comporte les caractères de base.


    Je suis un peu perdu de mon côté:
    - ascii (j'ai compris)
    - ascii extended (j'ai compris)
    - ansi (j'ai compris) (mais ansi == ascii extended ?)
    - unicode (si j'ai bien compris, chaque caractère a son code)
    - utf-8 (j'ai compris, il comporte au début les même numéros de l'ascii pour les mêmes caractères)

    - wchar est dans quelle categorie ?
    - quelle est le lien entre l'unicode et l'utf-8 ?

  4. #4
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    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 395
    Par défaut
    "ANSI" sous Windows est un abus de langage. Il signifie généralement ASCII éténdu, mais les encodages ASCII éténdus les plus utilisés par Microsoft (à commencer par Windows-1252) n'ont jamais vraiment été normalisés par l'ANSI.

    (ne pas oublier, il y a une pléthore d'ASCII étendus)


    Unicode est un jeu de caractères dit "universel" qui contient 216*17 caractères. UTF-8, UTF-16 et UTF-32 sont des encodages permettant de représenter la totalité des caractères unicode, en utilisant plusieurs valeurs consécutives si nécessaire.
    • Sous Linux, l'encodage "wide" correspond à UTF-32, un wchar_t fait donc la taille d'un int 32 bits. Un seul suffit donc toujours à représenter un code point Unicode.
    • Sous Windows, l'encodage "wide" correspond à UTF-16, un wchar_t fait donc la taille d'un short. Il en faut un ou deux pour représenter un code point Unicode.
      • Il en va de même pour Java et .Net, où un Char fait 16 bits.

    UTF-8 est un encodage sous forme d'ASCII étendu: Les code points correspondant aux caractères ASCII (de 0 à 127) prennent tous un char, et les code points strictement supérieurs à 127 prennent de deux à quatre char.
    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
    Expert confirmé
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 768
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 768
    Par défaut
    En fait ANSI c'est le code page (ou Multi Byte Character Set, MBCS) par défaut sous Windows ... et donc il est changeant en fonction que tu sois japonais, européen ou russe.

    Je remets mon commentaire d'un autre fil de discussion
    Unicode c'est UTF-8, UTF-16, UTF-32, ... mais il y en a d'autres (UTF-7 par exemple) obsolètes/ pas utilisés et les variantes Big Endian/ Little Endian.
    Et donc
    • UTF-8: compatibilité ASCII. Mais pas MBCS.
    • UTF-16: compromis entre compatibilité ASCII et taille d'un caractère
    • UTF-32: performance

  6. #6
    Membre chevronné
    Inscrit en
    Décembre 2010
    Messages
    290
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 290
    Par défaut
    Citation Envoyé par foetus Voir le message
    • UTF-8: compatibilité ASCII. Mais pas MBCS.
    • UTF-16: compromis entre compatibilité ASCII/ taille d'un caractère
    • UTF-32: performance
    Heu ... Je vois pas ce que tu veux dire. UTF-8 est un MBCS.

    UTF-16 n'est certainement pas un compromis entre la compatibilité ASCII et la taille d'un caractère, puisqu'il ne permet ni l'un ni l'autre:
    - une chaîne ASCII n'est pas directement interprétable comme une chaîne UTF-16
    - deux octets ne suffisent pas à représenter TOUT Unicode. Juste une partie nommée le Basic Multilingual Plane.
    A ce que je sais, UTF-16 a été utilisé par Microsoft à l'époque où on pensait que 16 bits suffiraient pour représenter tout Unicode. Le résultat c'est que ça marche pas toujours, avec des effets de bords assez difficiles à localiser.

    UTF-32: Performances ? vraiment ? Je serais curieux de voir une étude sur le sujet qui démontrerait que utf-32 est plus performant que les autres. Oui, le code est plus simple. Oui, 32 bits correpondent à un mot machine sur de nombreuses architectures. Mais ça ne suffit pas: multiplier par 4 la taille des données à manipuler a aussi un coût lorsque l'on copie une chaîne ou qu'on l'écrit sur le disque. Du coup, je doute fort que ce soit NECESSAIREMENT plus performant.

    Edit : Oh, et pour répondre à la question originale, je trouve que la réponse de Médinoc est la meilleure: utiliser TCHAR sous Windows, et de l'utf-8 sous Unix.
    Je rajouterais toutefois que lorsque je sérialise du texte (vers un fichier de configuration par exemple), alors je préfère utiliser utf-8 comme format de stockage, et convertir vers du TCHAR au moment de la lecture ou de l'écriture (sous Windows).

Discussions similaires

  1. Les outils que vous utilisez pour programmer en assembleur
    Par Smortex dans le forum x86 32-bits / 64-bits
    Réponses: 36
    Dernier message: 15/08/2022, 11h28
  2. Vous utilisez SWT ou Swing ?
    Par c-top dans le forum AWT/Swing
    Réponses: 84
    Dernier message: 12/10/2011, 14h03
  3. [Logiciels] Qu'est ce que vous utilisez en plus de EDI/RAD ?
    Par Baptiste Wicht dans le forum Langages de programmation
    Réponses: 9
    Dernier message: 18/03/2006, 11h21
  4. Vos avis sur les éditeurs que vous utilisez ?
    Par simone.51 dans le forum Editeurs / Outils
    Réponses: 18
    Dernier message: 08/02/2006, 20h41
  5. Avez-vous utilisez bold (alias ecospace en .net)?
    Par Bruno75 dans le forum Bases de données
    Réponses: 7
    Dernier message: 11/05/2004, 18h43

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