Convertisseur de fichiers vers/depuis utf-8

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 / Exemple :


#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/

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.