IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bibliothèques, systèmes et outils C Discussion :

modifier fichiers xsc vers txt utf-8


Sujet :

Bibliothèques, systèmes et outils C

  1. #1
    Membre du Club
    Profil pro
    Responsable administratif
    Inscrit en
    Février 2006
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable administratif

    Informations forums :
    Inscription : Février 2006
    Messages : 70
    Points : 51
    Points
    51
    Par défaut modifier fichiers xsc vers txt utf-8
    Bonjour,

    Je suis sous windows 10 et je code avec code::blocks et le compilateur gcc.

    J'ai créé un programme qui modifie le contenu de fichier xsc. En fait c'est un fichier de paramétrage d'un programme de lecture de fichiers musicaux, avec des balises de mesures, entre autre. Ce fichier reprend le chemin complet du fichier musical en lien.

    Mes lecteurs ont été renommés suite à un changement de pc et j'ai donc créé un code pour que les chemins des fichiers musicaux soit rétablis à l'aide de fopen, fgets, fputs. Comme je mets mes fichires xsc dans les mêmes répertoires que mes fichiers musicaux, j'ai créé un fichier txt dans lequel se trouve les chemins à réécrire. Tout va bien sauf pour les fichiers xsc qui 'pointent' vers un fichier musical dont le nom comporte des accents. Après des recherches je me suis rendu compte que les fichiers xsc de départ sont en utf-8, mais dès qu'il y a des accents dans ma ligne fgets, le fichier créé via fputs est converti en ANSI. Avec 'c'est la dans des canards.mp3' tout va bien, mais pour 'mèmère mèmère.mp3' je passe en ANSI. Je cherche depuis plusieurs jours à reconvertir ces fichiers en utf-8, ou plus simple, à forcer les fputs à écrire en utf-8.

    J'ai vu que notepad et le bloc note permettent de convertir à la pièce mais j'ai une cinquantaine de fichiers à convertir. Et puis je voudrais relever le challenge... J'ai lu pas mal de choses sur les tables de caractères. J'ai également vu l'existence de ICU, mais je parviens pas à l'utiliser : où télécharger les headers, dans quel répertoire les mettre et quelles instructions utiliser dans le code ? Bref je suis perdu et comme ça a l'air d'être un problème de niche, je ne trouve pas grand chose comme exemple pour me guider.

    Merci pour votre aide.

    Olivier

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 627
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 627
    Points : 10 548
    Points
    10 548
    Par défaut
    C'est 1 peu compliqué, mais je pense que ton problème est ailleurs ... comme la vérité

    "j'ai créé un fichier txt dans lequel se trouve les chemins à réécrire." : ce fichier doit être encodé en UTF-8, parce que sous Windows, il doit être en ANSI.

    "Je cherche depuis plusieurs jours à reconvertir ces fichiers en utf-8, ou plus simple, à forcer les fputs à écrire en utf-8." : techniquement tu ouvres ton fichier en binaire, et il faut caster tout en unsigned char pour avoir l'UTF-8 (parce que l'ASCII c'est 1 encodage sur 7bits, UTF-8 sur 1 à 4 octects). Je ne suis pas expert de la fonction fgets, mais je pense que cela passe.

    Pour la conversion, laisse tomber ICU (le peu que j'ai utilisé c'était 1 énorme bouzin énormisme ) ... et même laisse tomber le C pour 1 langage de script style Python et vérifier sa compatibilité avec l'Unicode.
    Et pour la conversion, vérifie bien l'encodage de base parce que sous Windows c'est très souvent MBCS ou "code page", ANSI/ 1252 pour les fichiers et OEM 850 pour la ligne de commandes en France (<- lien wikipedia en anglais)

  3. #3
    Membre du Club
    Profil pro
    Responsable administratif
    Inscrit en
    Février 2006
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable administratif

    Informations forums :
    Inscription : Février 2006
    Messages : 70
    Points : 51
    Points
    51
    Par défaut
    Salut Foetus, et tous les autres,

    Connaissant VBA je me suis tourné vers Visual Studio en VB. Rien de facile sinon à rentrer dans du code, si j'ai bien compris, où on créé un UTF8 avec Bom et ensuite retirer le Bom en sautant les 3 premiers bytes. Mais je découvre Visual Studio et je n'ai jamais travaillé aussi finement en VB.

    Par contre j'ai trouvé un petit utilitaire : chenc (http://quentinc.net/chenc). Il a suffit que je créé une variable contenant "chenc " + "cheminFichierSortie" + "65001", 65001 étant l'encodage UTF8 sans Bom, et écrire : system(variable).

    chenc est écrit en C, j'aurais pu l'intégrer dans mon code, mais finalement c'est plus simple avec system. Il faut évidemment que chenc se trouve dans le répertoire où se trouve mon exécutable ou bien il faut mettre le chemin de chenc dans la variable qui utilisée dans system.

    Problème résolu.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2007] fichier en extension .txt vers excel
    Par Debutant10 dans le forum Conception
    Réponses: 1
    Dernier message: 09/11/2011, 10h15
  2. [PHP 5.0] modifier fichier txt
    Par buzz94 dans le forum Langage
    Réponses: 2
    Dernier message: 28/09/2010, 23h39
  3. Outils (vista) pour convertir des fichiers vers l'UTF-8 ?
    Par Sergejack dans le forum Windows
    Réponses: 5
    Dernier message: 12/12/2008, 14h44
  4. Modifier les liens vers un fichier excel attaché
    Par achbor dans le forum VBA Access
    Réponses: 1
    Dernier message: 02/10/2008, 21h06
  5. modifier fichier .txt avec Visual Basic
    Par marco1980 dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 29/09/2006, 21h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo