begin process at 2012 05 27 14:58:16
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Fichiers / Disque

 > CONVERTISSEUR DE FICHIERS VERS/DEPUIS UTF-8

CONVERTISSEUR DE FICHIERS VERS/DEPUIS UTF-8


 Information sur la source

Note :
Aucune note
Catégorie :Fichiers / Disque Niveau :Débutant Date de création :26/08/2003 Date de mise à jour :26/08/2003 18:49:40 Vu / téléchargé :5 523 / 150

Auteur : Nebula

Ecrire un message privé
Site perso
Commentaire sur cette source (4)
Ajouter un commentaire et/ou une note

 Description

Ce (très) simple programme convertit les fichiers de votre codage local (option -l) vers UTF-8 et inversement (option -u), en utilisant les fonctions de conversions fournies avec la libc.

Source

  • #include <stdlib.h>
  • #include <stdio.h>
  • #include <string.h>
  • #include <glib/gconvert.h>
  • int main(int argc, char** argv) {
  • FILE* f;
  • char* t = NULL;
  • int n = 0;
  • gchar* b;
  • if (argc != 3 || (strcmp(argv[1], "-l") != 0 && strcmp(argv[1], "-u") != 0)) {
  • fprintf(stderr, "Usage: uconvert -l file\n");
  • fprintf(stderr, " uconvert -u file\n");
  • return EXIT_FAILURE;
  • }
  • if ((f = fopen(argv[2], "rt")) == NULL) {
  • fprintf(stderr, "Error opening file `%s` for reading.\n", argv[2]);
  • return EXIT_FAILURE;
  • }
  • while (feof(f) == 0) {
  • t = realloc(t, n + 1);
  • t[n++] = fgetc(f);
  • }
  • fclose(f);
  • if (t == NULL) {
  • fprintf(stderr, "File `%s` is empty.\n", argv[2]);
  • return EXIT_FAILURE;
  • }
  • t[n - 1] = '\0';
  • fprintf(stderr, "Converting file `%s` ... ", argv[2]);
  • if (strcmp(argv[1], "-u") == 0) {
  • if ((b = g_locale_from_utf8(t, -1, NULL, NULL, NULL)) == NULL) {
  • fprintf(stderr, "error\n");
  • free(t);
  • return EXIT_FAILURE;
  • }
  • } else {
  • if ((b = g_locale_to_utf8(t, -1, NULL, NULL, NULL)) == NULL) {
  • fprintf(stderr, "error\n");
  • free(t);
  • return EXIT_FAILURE;
  • }
  • }
  • if ((f = fopen(argv[2], "wt")) == NULL) {
  • fprintf(stderr, "error\n");
  • free(b);
  • free(t);
  • return EXIT_FAILURE;
  • }
  • fprintf(f, "%s", b);
  • fprintf(stderr, "done\n");
  • free(b);
  • free(t);
  • return EXIT_SUCCESS;
  • }
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <glib/gconvert.h>

int main(int argc, char** argv) {
  FILE* f;
  char* t = NULL;
  int n = 0;
  gchar* b;
  if (argc != 3 || (strcmp(argv[1], "-l") != 0 && strcmp(argv[1], "-u") != 0)) {
    fprintf(stderr, "Usage: uconvert -l file\n");
    fprintf(stderr, "       uconvert -u file\n");
    return EXIT_FAILURE;
  }
  if ((f = fopen(argv[2], "rt")) == NULL) {
    fprintf(stderr, "Error opening file `%s` for reading.\n", argv[2]);
    return EXIT_FAILURE;
  }
  while (feof(f) == 0) {
    t = realloc(t, n + 1);
    t[n++] = fgetc(f);
  }
  fclose(f);
  if (t == NULL) {
    fprintf(stderr, "File `%s` is empty.\n", argv[2]);
    return EXIT_FAILURE;
  }
  t[n - 1] = '\0';
  fprintf(stderr, "Converting file `%s` ... ", argv[2]);
  if (strcmp(argv[1], "-u") == 0) {
    if ((b = g_locale_from_utf8(t, -1, NULL, NULL, NULL)) == NULL) {
      fprintf(stderr, "error\n");
      free(t);
      return EXIT_FAILURE;
    }
  } else {
    if ((b = g_locale_to_utf8(t, -1, NULL, NULL, NULL)) == NULL) {
      fprintf(stderr, "error\n");
      free(t);
      return EXIT_FAILURE;
    }
  }
  if ((f = fopen(argv[2], "wt")) == NULL) {
    fprintf(stderr, "error\n");
    free(b);
    free(t);
    return EXIT_FAILURE;
  }
  fprintf(f, "%s", b);
  fprintf(stderr, "done\n");
  free(b);
  free(t);
  return EXIT_SUCCESS;
}

 Conclusion

Compilé et fonctionne sous Windows. Pour Linux, je testerais çà ce soir, tranquillement chez moi ;-)

Pour ceux qui n'ont pas la libc d'installée, plutôt que de recompiler la version du site GNU, voyez plutôt si vous pouvez installer GTK+, la libc y est intégrée, et la plupart des compilos (VC, BCC et GCC) sont supportés...
url : http://www.dropline.net/gtk/

Enfin, pour ceux qui utilisent GCC, jetez un oeil sur mon site, j'ai mis en ligne une archive avec GCC, OpenSSL, mySQL, GTK+ et les pthreads, le tout pour Windows et prêt à l'emploi, bien sûr...
url : http://caranarchie.free.fr/

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !
  • main.cTélécharger ce fichier [Réservé aux membres club]Voir ce fichier1 382 octets
  • MakefileTélécharger ce fichier [Réservé aux membres club]532 octets

Télécharger le zip


 Sources du même auteur

Source avec Zip ÉNUMÉRATION DES PROCESSUS ET DÉCHARGEMENT FORCÉ DE DLL
Source avec Zip EXÉCUTABLES SE VÉRIFIANT LORSQU'ILS SONT LANCÉS
Source avec Zip Source avec une capture RICHEDIT AVEC SUPPORT DES THÈMES XP
Source avec Zip CALCUL DE HASH MD5 (WIN32)
Source avec Zip VÉRIFIER QUE L'UTILISATEUR EST ADMINISTRATEUR

 Sources de la même categorie

COMPTER LE NOMBRE DE PAGES D'UN FICHIER PDF par Renfield
Source avec Zip Source avec une capture GENERE BMP par lajouad
Source avec Zip Source avec une capture GETIONNAIRE D'UNE BIBLIOTHÉQUE EN C par benzarabel
FONCTION D'ÉDITION DE FICHIER BIT À BIT [C-MULTIPLATEFORME] par lynxtyle
Source avec Zip Source avec une capture UN GESTIONNAIRE DU FICHIER par benzarabel

Commentaires et avis

Commentaire de Nebula le 27/08/2003 08:46:08

bon, ben sous linux, il compile mais veut rien convertir... sûrement une histoire avec les variables d'environnement (LANG et compagnie), mais j'ai eu la flemme de chercher hier o :-)

je corrige dès que je trouve comment faire... ciao

Commentaire de Thaeron le 22/05/2004 23:49:27

Ton code peut etre compilé sous windoz déjà, et ça vient pas des variables d'environnements (quoique c'est possible) mais là dans ton cas t'as oublié d'initialiser gtk (bha wé sinon ça marche pas).
Donc fais un appel à gtk_init() et si ça ne marche toujours pas rajoute en plus  setlocale (LC_CTYPE, "fr_FR"); au début du code.
Apres ça marche nickel quelque soit le charset local puisque ça le passe en fr_FR.
Bonne prog.
Thaeron

Commentaire de Nebula le 17/08/2004 01:38:15

En effet, en plus je me suis mis à GTK depuis, merci ! :)

Commentaire de sandycampagne le 07/02/2005 09:04:18

Salut
Ton programme m'interresse beaucoup mais je n'arrive pas à le faire fonctionner sous visual C++ 6.
Ou sont les fonctions "g_locale_from_utf8" et  "g_locale_to_utf8" et le fichier "glib/gconvert.h"
Merci d'avance pour ton aide.
@+
bye

 Ajouter un commentaire




Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,671 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales