Unicode et gestion du français.

Résolu
scorpyon1903 Messages postés 12 Date d'inscription mercredi 26 mai 2004 Statut Membre Dernière intervention 3 mai 2005 - 15 avril 2005 à 11:49
scorpyon1903 Messages postés 12 Date d'inscription mercredi 26 mai 2004 Statut Membre Dernière intervention 3 mai 2005 - 19 avril 2005 à 16:10
Bonjour,

Je développe un petit programme en C (pour la console).
1°) Actuellement, je prends l'entrée standard (mon clavier) et je stocke ce qui est saisi dans un fichier texte. Or lorsque j'édite celui-ci, tous les caractère accentués sont remplacés par des virgules. J'ai changé les propriétés de mon projet en utilisant les caractères Unicode (j'utilise VC++2003) et maintenant les caractères comme le "é" sont remplacés par un petit carré.
Est-ce que quelqu'un peut m'aider pour résoudre ce problème ?
2°) D'autre part, j'aimerais que la date et l'heure que j'écris dans mon fichier log soient en français, malheureusement, j'ai beau faire des setlocale à toutes les sauces, tout reste en anglais.
Quelqu'un a la solution ?

Merci à tous par avance.

Le sot ne sait pas ce qu'il dit mais le sage ne dit pas ce qu'il sait...

4 réponses

vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
18 avril 2005 à 17:55
Remplace CharToOem par CharToOemA
3
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
15 avril 2005 à 12:22
Pour le premier problème je crois que ca n'a rien a voir avec unicode
(les caractères accentués font partie de la table ASCII étendue). Tu
peux utiliser la fonction CharToOem pour régler ces problèmes ou bien
écrire directement avec les codes OEM mais ce sera illisible dans le
source.
0
scorpyon1903 Messages postés 12 Date d'inscription mercredi 26 mai 2004 Statut Membre Dernière intervention 3 mai 2005
18 avril 2005 à 10:33
Bonjour,
J'ai essayé d'utiliser la fonction CharToOem mais j'ai des erreurs à la ompilation (error C2664: 'CharToOemW' : impossible de convertir le paramètre 1 de 'char [100]' en 'LPCWSTR').
Voici mon code pour lire sur stdin, pouvez-vous me dire comment utiliser CharToOem car je ne m'en sort pas avec l'aide MSDN?


postTab est défini comme suit dans mon programme :
char postTab[longCh];



void recup()
{

int ch;

for(i=0; i<longCh && ((ch=getwchar())!=EOF) && (ch!='\n'); i++)
postTab[i]=(
char)ch;
postTab[i]='\0';
// on termine la chaine avec le caractère de fin de chaîne.
CharToOem(postTab, postTab); // pour convertir ma chaine en OEM.
}

Merci d'avance.
0
scorpyon1903 Messages postés 12 Date d'inscription mercredi 26 mai 2004 Statut Membre Dernière intervention 3 mai 2005
19 avril 2005 à 16:10
Salut !

J'ai testé CharToOemA, je n'ai plus d'erreur à la compilation mais le résultat obtenu n'set pas celui attendu (ie un 'é' apparait comme ',' au lieu d'un carré comme c'était le cas auparavant). Je désespère :'-(.
0
Rejoignez-nous