bonjour,
j'ai récupéré un script PHP pour parser un gros fichier xml (10Mo, 50.000 lignes).
Je l'ai modifié pour qu'il me permette d'entrer des parties définies dans un table mySQL.
j'ai un problème car le fichier est défini en UTF-8 et quoi que je fasse, la gestion du format est mauvaise.
mon fichier contient des infos sur les communes de France.
j'envoie le fichier àla gestion des data est faite par :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 function new_xml_parser($file){ global $parser_file; $xml_parser = xml_parser_create(); //création du parseur xml_parser_set_option($xml_parser, XML_OPTION_CASE_FOLDING, 1); //Activation du respect de la casse du nom des éléments XML xml_set_element_handler($xml_parser, "startElement", "endElement"); //Déclaration des fonctions à rattacher au gestionnaire d'événement xml_set_character_data_handler($xml_parser, "characterData"); xml_set_external_entity_ref_handler($xml_parser, "externalEntityRefHandler"); if (!($fp = @fopen($file, "r"))) return FALSE; //Ouverture du fichier // Transformation du parseur en un tableau if (!is_array($parser_file)) settype($parser_file, "array"); $parser_file[$xml_parser] = $file; return array($xml_parser, $fp); }
je rentre globaldata dans un tableau associatif pour chaque commune et lorsque la balise de fin de commune apparaît, je veux rentrer les infos dans la base. Pour le moment je l'écris en HTML.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 // Fonction associée à lévénement données textuelles function characterData($parser, $data){ global $globaldata; $globaldata = $data; // iconv('UTF-8', 'ISO-8859-1//IGNORE',) // ;mb_convert_encoding(, 'ISO-8859-1', 'UTF-8') }
Un exemple de mon problème est la ville 'Montluçon' : me donne :
- 'çon' si j'écris $data tel quel en spécifiant la page HTML en tant qu'UTF8
- 'çon' si j'écris tel quel avec un HTML ISO-8859-1
- ' çon' si je transcrit en ISO-8859-1 avec la fonction iconv en HTML ISO-8859-1
- idem pour une conversion avec mb_convert_encoding
alors je comprends rien.
Partager