Pages : 1
#1 Le 12/12/2007, à 17:08
- elekaj34
Encodage nom de fichier
Bonjour,
Dans un programme en C, je construit un nom de fichier dans une variable de type "char *"
Ensuite je passe se nom de fichier à une commande système comme suit :
char *command;
char *file;
....
sprintf(command,"touch \"%s\"",file);
system(command);
Tout marche bien, sauf pour les nom de fichiers contenant des accents, ceux ci apparaissent alors sous Ubuntu (mais d'autres Linux aussi) avec un ?
Comment faire pour encoder mes nom de fichiers en UTF8 (car je suppose que le problème vient de là ) ?
Cordialement,
Alain - Linux Ubuntu 18.04 LTS 64bits
Lumières d'Ici ... et d'Ailleurs
Hors ligne
#2 Le 12/12/2007, à 18:11
- Link31
Re : Encodage nom de fichier
Je n'ai pas testé ce code avec des noms de fichiers, mais ça pourrait te donner quelques pistes :
#include <stdio.h>
#include <stddef.h>
#include <locale.h>
int main()
{
setlocale(LC_CTYPE, "fr_FR.UTF-8");
const wchar_t *file = L"texte avé dè acçents";
printf("%ls\n", file);
return 0;
}
Pense à spécifier la localisation (sinon bizarrement printf() refuse de fonctionner), et pense à utiliser le préfixe l dans les chaà®nes de format.
Dernière modification par Link31 (Le 12/12/2007, à 18:11)
Hors ligne
#3 Le 13/12/2007, à 09:03
- elekaj34
Re : Encodage nom de fichier
Merci pour le bout de code
Si je test dans un fichier à part, cela fonctionne au poil.
Dans mon programme, lors de l'affichage
Erreur de segmentation (core dumped)
Pourtant, j'ai pris un autre nom de variable, remplacé le char *file par const wchar_t *file mais rien n'y fais.
Cependant, je suis sur la bonne piste
Alain - Linux Ubuntu 18.04 LTS 64bits
Lumières d'Ici ... et d'Ailleurs
Hors ligne
Pages : 1