Les meilleurs sources GTK+Consultez toutes les sources

Nombre d'auteurs : 4, nombre de sources : 13, dernière mise à jour : 28 juin 2013 

 
OuvrirSommaireGLib

La glib propose une seule API pour lire un fichier XML : l'API SAX[FAQ XML] Qu'est-ce que SAX ?.
Voici une implémentation de l'API DOM[FAQ XML] Qu'est-ce que DOM ? basée sur GMarkup.

Créé le 25 novembre 2006  par Nicolas Joseph

Téléchargez le zip

Voici une source qui permet de connaître l'encodage d'un fichier texte. Comme il n'existe aucune méta-donnée dans les fichiers texte, nous sommes obligés de tester un à un différents encodages jusqu'à ce que la covertion réussisse. Dans ce code, je me contente de tester UTF-8 et ISO-8859-15 qui sont les plus répendus.

encoding.h
Sélectionnez
#ifndef H_NJ_ENCODING_11122007161145
#define H_NJ_ENCODING_11122007161145
 
#include <glib.h>
 
G_BEGIN_DECLS
 
const gchar *encoding_get_charset (const gchar *);
 
G_END_DECLS
 
#endif /* not H_NJ_ENCODING_11122007161145 */
encoding.c
Sélectionnez
#include "encoding.h"
 
#include <stdlib.h>
#include <string.h>
 
static const gchar *charsets[] = {"UTF-8", "ISO-8859-15", NULL};
 
static gboolean test_encoding (const gchar *filename, const gchar *charset)
{
  gboolean valid = FALSE;
 
  if (filename != NULL)
  {
    gchar *content = NULL;
 
    g_file_get_contents (filename, &content, NULL, NULL);
    if (content != NULL)
    {
      gchar *convert = NULL;
      gsize bytes_read = 0;
 
      convert = g_convert (content, -1, "UTF-8", charset, &bytes_read, NULL,
                           NULL);
      if (convert != NULL)
      {
        if (bytes_read == strlen (content))
        {
          valid = TRUE;
        }
        free (convert), convert = NULL;
      }
      free (content), content = NULL;
    }
  }
  return valid;
}
 
/**
 * encoding_get_charset:
 * @filename: le chemin complet du fichier.
 *
 * Retourne l'encodage d'un fichier texte.
 *
 * Return value: l'encodage du fichier ou %NULL si non trouvé.
 */
const gchar *encoding_get_charset (const gchar *filename)
{
  gint i;
 
  for (i = 0; charsets[i] != NULL; i++)
  {
    if (test_encoding (filename, charsets[i]))
    {
      break;
    }
  }
  return charset[i];
}
Créé le 27 décembre 2007  par Nicolas Joseph
  

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2007-2013 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.