bonjour,
Je voudrai savoir comment faire pour spécifier que le type wchar_t contient un caractère unicode.fwscanf ecris dans un wchar faudrait t'il spécifier unicode pour avoir les bons résultats?
bonjour,
Je voudrai savoir comment faire pour spécifier que le type wchar_t contient un caractère unicode.fwscanf ecris dans un wchar faudrait t'il spécifier unicode pour avoir les bons résultats?
??
En extrapolant à partir du peu de mots compréhensibles de ton message, je pense que ton problème vient du fait que les fonctions que tu utilises pour lire dans le flux sont unicode, mais que ton environnement C++ considère le flux comme ne l'étant pas.
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.
Comme ça ça marche.
Code : Sélectionner tout - Visualiser dans une fenêtre à part fonction (L"chaine");
En C standard ? Impossible. Par contre sous Windows le type wchar_t est utilisé pour représenter des caractères unicode.
fwscanf requiert un argument de type wchar_t * à la place du char * de fscanf. Il n'y a rien à spécifier de plus pour qu'il en soit ainsi. Si ce que tu cherches c'est comment faire pour que _ftscanf (Microsft) corresponde à fwscanf, il faut définir la macro UNICODE (sous Visual C++ 2005 et plus écents UNICODE est déjà défini par défaut).Envoyé par titi2
bonjour,
Merci pour vos réponses
le probleme comme Médinoc l'a dit c'est que l'environnement C ne considére pas Wchar comme étant unicode? quelqu'un aurait une solution?
les caractères larges (wchar_t) en C ont été crées pour pouvoir stocker tous les caractères possibles (plsu ou moins...)
La norme laisse à l'implémentation le choix de la taille de stockage et donc le nombre de caractères possibles.
Selon les implémentations actuelles, cela peut être 1, 2,4 bytes.
Maintenant, la notion d'unicode porte sur l'encodage de ces caractères (codepoints, surrogates, ...). Il n'y à pas un Unicode mais des encodages Unicodes : UTF7, UTF8, UTF16 (fixe ou variables), UTF32, ....
les chaines de caractères larges (wchar_t *) permettent de stocker des chaines unicodes. C'est tout.
L'interprétation du contenu dépend d'un encodage donné.
Par exemple :
- Windows gère Unicode par de l'UTF16 (variables avec surrogates) et wchar_t est sur 2 bytes (unsigned short)
- Linux gère Unicode avec UTF32 et wchar_t est sur 4 bytes (unsigned long)
Que veux tu réellement faire ? ton post n'est pas clair.
Vincent Rogier.
Rubrique ORACLE : Accueil - Forum - Tutoriels - FAQ - Livres - Blog
Vous voulez contribuer à la rubrique Oracle ? Contactez la rubrique !
OCILIB (C Driver for Oracle)
Librairie C Open Source multi-plateformes pour accéder et manipuler des bases de données Oracle
C'est pas une question de wchar, c'est une question de savoir ton problème.
C'est un problème quand tu lis/écris un fichier, ou c'est pour les chaînes littérales?
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.
je lis un fichier utf-8 puis j'ecris dans un fichier avec les fonctions wchar ca marche par contre quand je veux afficher le code des caractères du wchar je me rend compte que c'est pas les meme que ceux des caractères unicode dans mon fichier.Donc je conclus que le stockage en mémoire ne se fait pas bien.
Y'a pas grand-chose pour lire de l'UTF-8.
Si tu es sous un Linux entièrement UTF-8, on peut espérer que les données soient correctement converties en wchar_t en lecture.
Sous Windows, il n'y a rien de prévu "de base", sauf dans les versions récentes (>= VS2005) de la C Run-Time library, qui permettent de lire des fichiers en UTF-8 ou UTF-16.
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.
Partager