Bonjour,
Je suis en train de me prendre la tête avec la fonction wprintf() qui est censée apporter une amélioration concernant le traitement des caractères accentués dans les chaines de caractères en C. Le constat est le suivant: quand nous essayons d'aligner des champs (type formulaire) avec mes élèves, si nous avions le malheur d'avoir un caractère accentué dans la chaine de caractères à afficher, nous avons un ou plusieurs décalages vers la gauche résultant du fait que printf() fait la conversion unicode (2 bytes si je ne me trompe pas) --> ascii (1 byte) et ne restitue pas le byte perdu dans la chaine.
Ainsi une chaine de 30 caractères devient une chaine de 29 caractères après être passée dans le printf(). Ce qui explique le décalage dans les champs de formulaires alignés...
Je ne sais pas vous faire un topo dans cette misère de contrôle où il est impossible d'aligner les champs (la faute à php ????)
Mais en gros:
Nom: [ chaine de 30 caractères alignée sur la droite]
Adresse [ chaine de 30 caractères qui contient des accents]
Le champs Nom et Adresse ne sont plus alignés (et pour cause la chaine contenant l'adresse ne fait plus 30 caractères mais une taille inférieure correspondant à 30-nombre de caractères accentués.).
Nous essayons de nous "dépatouiller" avec [B]wprintf[()/B] mais c'est encore pire, là lorsque nous essayons d'afficher la chaine, la fonction wprintf() n'affiche que la première lettre ou remplace les accents par '?'... pénible...
Devrais-je abondonner C et passer à Java en mode console ?
Ou obliger mes élèves (moi ça va je maitrise) à écrire tous leurs programmes en anglais ^^
Je n'ai pas encore bien cherché sur le net, et dans la littérature, disons que ça me gonfle.
Partager