Accueil
Accueil Le Club Delphi Kylix C C++ Java J2EE DotNET & C# Visual Basic Access Pascal Dev Web PHP ASP XML UML SQLSGBD Windows Linux Autres
logo

precedent    sommaire    suivant   


Auteur : Nicolas Joseph
Version : 25/11/2006
Téléchargez le zip
API DOM pour la lecture de fichier XML
La glib propose une seule API pour lire un fichier XML : l'API SAX.
Voici une implémentation de l'API DOM basée sur GMarkup.


Auteur : Nicolas Joseph
Version : 11/12/2007
Détecter l'encodage d'un fichier texte
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
#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
#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];
}

precedent    sommaire    suivant   

Consultez les autres pages sources


Les sources présentés sur cette pages sont libre de droits, et vous pouvez les utiliser à votre convenance. Par contre cette page de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright ©2007  Developpez LLC. Tout 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'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérets. Cette page est déposée à la SACD.

Vos questions techniques : forum d'entraide Accueil - Publiez vos articles, tutoriels, cours et rejoignez-nous dans l'équipe de rédaction du club d'entraide des développeurs francophones. Nous contacter - Copyright 2000..2005 www.developpez.com