rem: doc = xmlParseFile ( nom_ib );
add: doc = utf8_xmlParseFile( nom_ib );
context: gboolean charge_ib ( gchar *nom_ib ){    xmlDocPtr doc;    doc = xmlParseFile ( nom_ib );    if ( doc )    {	/* vérifications d'usage */	xmlNodePtr root = xmlDocGetRootElement(doc);	    	if ( !doc->children	     ||	     !doc->children->name	     ||	     g_strcasecmp ( doc->children->name,			    "Grisbi_ib" ))	{	    dialogue_error ( _("This file is not a grisbi budgetary lines file") );	    xmlFreeDoc ( doc );	    return ( FALSE );	}	/* récupère la version de fichier */	if (( !strcmp (  xmlNodeGetContent ( root->children->next->children->next ),			 "0.4.0" )))	    return ( charge_ib_version_0_4_0 ( doc ));	if (( !strcmp (  xmlNodeGetContent ( root->children->next->children->next ),			 "0.4.1" )))	    return ( charge_ib_version_0_4_0 ( doc ));	if (( !strcmp (  xmlNodeGetContent ( root->children->next->children->next ),			 "0.5.0" )))	    return ( charge_ib_version_0_4_0 ( doc ));	/* 	à ce niveau, c'est que que la version n'est pas connue de grisbi, on donne alors */	/* la version nÃ©cessaire pour l'ouvrir */	if (( strcmp (  xmlNodeGetContent ( root->children->next->children->next ), VERSION_FICHIER_IB )))	  {	    dialogue_warning_hint ( g_strdup_printf (_("This budgetary lines list has been produced with grisbi version %s, Grisbi will nevertheless try to import it."), xmlNodeGetContent ( root->children->next->children->next )),				    _("Version mismatch") );	  }	return ( charge_ib_version_0_4_0 ( doc ));    }    else    {	dialogue_error ( _("Invalid budgetary lines file") );	return ( FALSE );    }}