Conversion UTF-8 => OEM [résolu ] - C - Programmation
Marsh Posté le 15-04-2004 à 22:32:15
y a des fonctions dans la glibc pour faire je crois bien. Je regarde ça et je poste
Marsh Posté le 15-04-2004 à 22:38:45
OEM ça n'existe pas. il faut que tu fasses une conversion
http://developer.gnome.org/doc/API [...] #id2653955
Marsh Posté le 16-04-2004 à 00:59:21
Je maintiens ce que je dis, OEM existe
http://msdn.microsoft.com/library/ [...] e_17si.asp
C'ets le codage utilisé par windob.
Sinon, les fonction que tu m'a montré je les connais déjà, mais j'arrive pas à le sutiliser, cela plente toujours.
J'abuserais peut etre en te demandant de me faire un petit exemple d'utilisation ?
Code :
|
Ce code compile mais plante, en fait, je sais pas quoi mettre pour les champ 3 et 4 et çà viens de là.
Pourrais tu m'expliquer quoi mettre ?
Merci, et @++
Marsh Posté le 16-04-2004 à 08:53:47
3 et 4 je ne sais pas non plus.
Ta variable "a" pointe sur rien par contre. C'est sans doute là que ça coince. Essaye :
gsize a;
Res = g_convert (Temp,1,"CP_OEMCP","CP_UTF8",NULL,&a,NULL);
Marsh Posté le 16-04-2004 à 10:20:28
ah ouais !.
Code :
|
mais çà marche toujours pas, c'est vrais que mon pointeur a ne pointait nul part, mais de toute façon, çà change rien, car ce paramètre peut etre NULL, donc voilà.
Ce sont ces de paramètres 3 et 4 qui doivent foirer à mon avis.
Est-ce que quelqu'un sait comment faire ?
merci, @++
Marsh Posté le 16-04-2004 à 10:47:47
Tu les as trouvés où tes paramètres 3 & 4 ?
J'ai trouvé des exemples où les paramètres sont :
"UTF-8", "ISO-8859-1", "CP1251", "UCS-2BE"...
Essaye de remplacer ton CP_UTF8 par UTF-8 et ton CP_OEMCP par un autre pour voir
Marsh Posté le 16-04-2004 à 12:35:03
mes paramères 3 et 4, je les ais trouvé pour une autre fonction, mais j'ai fait la recherche de mon coté, et je remplace "CP_UTF8" par "UTF-8" et la, je cherche pour l'autre paramètre.
C'est bien "ISO-8859-1"; mais le dernier chiffre change selon le pays, et je cherche ddonc une table qui me l'indique.
@++
Marsh Posté le 16-04-2004 à 12:37:36
Citation : ISO 8859-1 Langues ouest-européennes (Latin-1) |
http://docs.mandragor.org/files/Op [...] o_8859-1.7
j'espère que çà va résoudre mon problème
@++
Marsh Posté le 16-04-2004 à 14:03:34
oué, mais dire que c'ets intuitl, çà fait pas avancer le smilblick
Je sais que j'aurais pu faire
Code :
|
@++
Marsh Posté le 16-04-2004 à 15:59:12
Résolu ? T'as fait quoi finalement ?
C'est toujours intéressant de savoir
Marsh Posté le 16-04-2004 à 20:15:04
ah oui, excuse, je me sauvais comme un voleur
/* conversion de chaine UTF-8 <=> OEM */
#include <gtk/gtk.h>
#include <string.h>
Code :
|
et surtout, j'ai fais çà :
Code :
|
c'est ce qui cahnge tout le problème.
En fait, au début, je copiais d'abord le contenu de mon entry dans une chaine de caractères, puis de convertissais cette chaine. J'avais bien pris soin de declarer cette chaine comme une gchar*, mais non, çà voulais pas marcher, alors j'ai lancé le debbugeur de VC++ une bonne vingtaine de fois pour voir ce qui se passait, bin la conversion marchait, mais le PB, c'est que cette de gchar ne semble pas etre reelement codé en Utf-8. Donc une partie du probème venait de là.
Mais sinon, il ne faut surtout pas renvoyer un pointeur sur une chaine, car cette dernière est détruite, c'et spour çà que j'ai creer une fonction de ce type.
donc les gchar
bon, maintenant, je trafique mon code avec un paquet de #if defined LINUX ....
pour faire en sorte que mon code soit portable.
J'espère qu'il le sera, mais je sens déjà une grosse couille arriver au niveau du codage des caractères. Sous windows, c'est iso8859-1 mais sous linux, j'en ais pas la moindre idée, et ç àva être sportif à trouver
@++++
Marsh Posté le 15-04-2004 à 22:27:45
Voilà, je programme avec Gtk. Or, les chaine retournées sont de types UTF-8, et moi, j'ai besoin de faire des comparaisons pour savoir si par exemple, la chaine contient un 'é', pour le transformer en 'e'.
Le problème est que lors de la compilation les caractères entré dans le programme sont codé en OEM.
Donc, je cherche une fonction qui permettrait cette conversion.
J'ai entendu parler de WideCharToMultiByte sur http://msdn.microsoft.com/library/ [...] e_2bj9.asp mais je n'arrive pas à l'utiliser correctement.
Merci et @+++
Message édité par GOUGOU1 le 16-04-2004 à 14:24:58