Unicode et gestion du français. [Résolu]

Signaler
Messages postés
12
Date d'inscription
mercredi 26 mai 2004
Statut
Membre
Dernière intervention
3 mai 2005
-
Messages postés
12
Date d'inscription
mercredi 26 mai 2004
Statut
Membre
Dernière intervention
3 mai 2005
-
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

Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
Remplace CharToOem par CharToOemA
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
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.
Messages postés
12
Date d'inscription
mercredi 26 mai 2004
Statut
Membre
Dernière intervention
3 mai 2005

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.
Messages postés
12
Date d'inscription
mercredi 26 mai 2004
Statut
Membre
Dernière intervention
3 mai 2005

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 :'-(.