salut, je suis en train de (essayer de) réaliser une fonction qui converti une chaine Unicode en ASCII.
J'ai compris le codage unicode, mais je tombe sur un pb tout bete :
meme si le char pointé par srcPt est > a 0x7F, ca n'ecrit jamais "superieur" alors que si on remplace *srcPt par par exemple 0xffffffc3 (c'est une des valeur imprimée par le second printf), ca marche ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 while(*srcPt!='\0'){ if(*srcPt>0x7F){ printf("SUPERIEUR"); } if(*srcPt< 0x7F){ printf("0x%x ",*srcPt); *dstPt=*srcPt; srcPt++; dstPt++; } else { srcPt++; *dstPt=0xC0 + (*srcPt-0x80); srcPt++; dstPt++; } }
J'ai aussi repéré un truc bizarre, c'est que le second printf me renvoie 1 ou 4 octet, selon que le caractère soit respectivement "normal" (<127) ou non.
D'ou mes 2 questions :
- si qq'un a deja cette fonction sous le coude, je suis preneur.
- pourquoi le test *srcPt< 0x7F ne fonctionne pas?
merci
Partager