Bonjour,
J'aimerai faire un programme qui me permet de changer l'encodage d'un fichier texte. Je ne connais pas l'encodage du fichier texte de départ et je veux l'encoder en UTF-8.
Voici un extrait des fichiers textes (ce sont des fichiers sous titres de film) :
4
00:00:37,705 --> 00:00:41,249
Mari, pËre, pharmacien
et parfait gentleman,
5
00:00:42,167 --> 00:00:45,002
rÈsidant ‡ Greenberry Hill, Londres.
6
00:00:45,546 --> 00:00:49,424
AssassinÈ par trois vagabonds
au simple motif du vol.
Je ne sais pas si j'ai la bonne méthode, en fait au lieu de faire un chercher-remplacer manuel ( '‡' => 'à' , 'È' => 'é' , etc...) directement dans le fichier texte je veux automatiser ces opérations grâce à un programme.
Donc pour l'instant je suis parti avec ce code :
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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75 #include <stdlib.h> #include <stdio.h> int main(int argc, char *argv[]) { FILE* fichier = NULL; int caractereActuel = 0; fichier = fopen("test.srt", "r+"); if (fichier != NULL) { // Boucle de lecture des caractères un à un while (caractereActuel != EOF) // On continue tant que fgetc n'a pas retourné EOF { caractereActuel = fgetc(fichier); // On lit le caractère printf("%c", caractereActuel); // On l'affiche switch (caractereActuel) { case '': printf("â"); break; case 'È': printf("é"); break; case '': printf("à"); break; case 'Á': printf("ç"); break; case '«': printf("Ç"); break; case 'Ù': printf("ô"); break; case '˚': printf("û"); break; case 'Ë': printf("è"); break; case 'Í': printf("ê"); break; case '˘': printf("ù"); break; case 'Ó': printf("î"); break; case '¿': printf("À"); break; case 'Ô': printf("ï"); break; case 'ú': printf(""); break; case ' ': printf("É"); break; case '»': printf("È"); break; } } fclose(fichier); } return 0; }
Lorsque je compile il me dit comme erreur "multi-character character constant" pour chaque 'case' où j'utilise un caractère exotique (par exemple : case '‚'). Lorsque je remplace ces caractères par d'autres plus classique comme 'e' ou 'a' l'erreur disparaît et tout se passe bien. Du coup j'ai essayé d'inclure la bibliothèque ctype.h mais ça ne change rien. Je ne sais plus quoi faire !
J'ai oublié de préciser mais le code que j'ai présenté plus haut n'est pas fini, vous avez du remarquer que pour l'instant je lis juste le fichier texte mais je ne remplace pas les caractères. Pour l'instant je les écrit juste dans le terminal.
PS : le code dans XCode est bien écrit en UTF-8 :
Voilà donc je suis sur mac, je compile avec le terminale et je code avec XCode. Je suis débutant en programmation et c'est mon premier programme en C (merci les tutos d'ailleurs !).
Je pense que j'ai dors et déjà perdu plus de temps à coder le programme que je pourrai en gagner lorsque la tâche sera automatisé, m'enfin bon c'est aussi surtout pour progresser que je fais ça !
Partager