Bonjour,
je me tourne vers vous car dans le programme que je suis en train d'écrire (en C avec GTK+ sous Windows 7), je rencontre un problème avec les chemins accentués:
lorsque je récupère à l'aide d'un fileChooser le chemin (absolut) pour créer un fichier, si celui-ci a le malheur de contenir un accent, l'ouverture ensuite du fichier échoue (ce qui est assez embêtant vu que dans le nom d'utilisateur, j'ai déjà un accent, et qu'en plus je compte une fois fini le distribuer à quelques personnes sans que je sache s'ils ne sont pas dans le même cas (et des fichiers de sortie, généralement on les veut dans un dossier sur le bureau, pas à la racine du disque dur)).
en exécutant, si je choisis un chemin sans accents, tout va bien, mais dans le cas contraire, le fichier n'est pas créer et quand j'affiche avec printf en cossole le chemin, j'obtient:
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
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48 GtkWidget *pFileChooser=NULL; pFileChooser=gtk_file_chooser_dialog_new("Ou voullez vous sauvegarder le rapport", NULL, GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER,"Save",1,"Cancel",2,NULL);//, const gchar *first_button_text, ...); j=1; if (gtk_dialog_run(pFileChooser)==1) { j++; } FILE *fichier_de_rapport; char dateheure[256]; time_t timestamp = time(NULL); while (j!=0) { j--; if (j==0) { fichier_de_rapport=NULL; strftime(dateheure, sizeof(dateheure), "data/rapport/rapport %Y %m %d %H %M %S.txt", localtime(×tamp)); fichier_de_rapport=fopen(dateheure,"w+"); } else { fichier_de_rapport=NULL; gchar *chemin; chemin=g_filename_from_utf8(gtk_file_chooser_get_filename(pFileChooser),100,NULL,NULL,NULL); chemin=gtk_file_chooser_get_filename(pFileChooser); strftime(dateheure, sizeof(dateheure), "data/rapport/rapport %Y %m %d %H %M %S.txt", localtime(×tamp)); gchar cheminBis[100]; strcpy(cheminBis,chemin); strcat(cheminBis,"\\"); strcat(cheminBis,dateheure+13); //strcpy(fichier_de_rapport,chemin); printf("fichier_de_rapport=%s",cheminBis); fichier_de_rapport=fopen(cheminBis,"w+"); } if (fichier_de_rapport!=NULL) { //on remplit le fichier } fclose(fichier_de_rapport); } gtk_widget_destroy(pFileChooser); }
je pense que le problème vient donc d'un nom invalide (je pense que l'ordinateur ne reconvertit pas le 'é' en le 'é' que c'était à l'origine).C:\Users\*é** ******\Desktop\rapport 2012 11 25 11 47 19 .txt
Ma question est donc la suivante :
Comment faire pour pouvoir également choisir les emplacements dont les chemins contiennent ds accents?
Merci d'avance
katorps
Partager