problème de codage xml
4 messages • Page 1 sur 1
Consultez la formation au référencement naturel Google de WebRankInfo / Ranking Metrics
problème de codage xml
Bonjour,
Je récupère un fichier xml qui est encodé en US-ASCII que je mets en base de donnée mysql.
Dans la base j'ai donc les accents sous cette forme .
exemple:
& #233; => é
& #232;=>è
etc ......
J'ai crée un moteur de recherche dans la base.
Lorsque je cherche par exemple un mot avec accent tel que : " réalisation " , il ne le trouve pas vu apparemment qu'il est écrit sous cette forme " r& #233;alisation " dans la base.
Je ne vois pas trop comment m'en sortir.
Ce que j'ai fais pour l'instant ( ce qui n'est pas la meilleur méthode). Je récupérère le fichier xml, je remplace dedans " & #233; par é " et "& #232; par è " ainsi de suite et je le sauvegarde sous cette forme en bdd.
Maintenant le mot "réalisation" est bien trouvé mais le mot "realisation" sans accent n'est pas trouvé.
c'est terrible ces problèmes d'accent pfffff....
Quelqu'un a une idée pour m'en sortir?
Merci
Je récupère un fichier xml qui est encodé en US-ASCII que je mets en base de donnée mysql.
Dans la base j'ai donc les accents sous cette forme .
exemple:
& #233; => é
& #232;=>è
etc ......
J'ai crée un moteur de recherche dans la base.
Lorsque je cherche par exemple un mot avec accent tel que : " réalisation " , il ne le trouve pas vu apparemment qu'il est écrit sous cette forme " r& #233;alisation " dans la base.
Je ne vois pas trop comment m'en sortir.
Ce que j'ai fais pour l'instant ( ce qui n'est pas la meilleur méthode). Je récupérère le fichier xml, je remplace dedans " & #233; par é " et "& #232; par è " ainsi de suite et je le sauvegarde sous cette forme en bdd.
Maintenant le mot "réalisation" est bien trouvé mais le mot "realisation" sans accent n'est pas trouvé.
c'est terrible ces problèmes d'accent pfffff....
Quelqu'un a une idée pour m'en sortir?
Merci
Re: problème de codage xml
seabird a écrit:Je récupère un fichier xml qui est encodé en US-ASCII que je mets en base de donnée mysql.
Et tu le parses avec quoi? Des regexp, ou un vrai parser XML?
seabird a écrit:Dans la base j'ai donc les accents sous cette forme .
exemple:
& #233; => é
& #232;=>è
etc ......
Si tu utilisais un vrai parser XML il te décoderait les entités (tous les &...
seabird a écrit:Ce que j'ai fais pour l'instant ( ce qui n'est pas la meilleur méthode). Je récupérère le fichier xml, je remplace dedans " & #233; par é " et "& #232; par è " ainsi de suite et je le sauvegarde sous cette forme en bdd.
Je ne sais pas si c'est possible en php (en fait tu ne nous as même pas dit quel language tu utilises), mais en perl tu peux faire un
- Code: Tout sélectionner
s/&#(\d+);/chr($1)/eg
seabird a écrit:Maintenant le mot "réalisation" est bien trouvé mais le mot "realisation" sans accent n'est pas trouvé.
Ca ça peut être un peu plus compliqué. Il y a peut-être des moyens de faire ça automatiquement en mysql, sinon il faut pouvoir faire une décomposition des caractères Unicode et virer les diacritiques. En perl ça donne ça:
- Code: Tout sélectionner
use Unicode::Normalize;
my $word2 = NFD($word);
$word2 =~ s/\pM//g;
Mais après il faut gérer ça au niveau des index utilisés pour la recherche et tout ça. Comme tu utilises probablement les recherches fulltext de mysql, ce n'est probablement pas la bonne méthode.
Jacques.
Tout d'abord j'ouvre le fichier xml avec fopen
j'utilise str_replace pour changer les codes:
& #233; => é
& #232;=>è
etc ......
je réenregistre ensuite le fichier ( fput) . ( par contre je n'arrive pas à avoir les retours chariot dans ce nouveau fichier, à la limite cela ne me gène pas)
Ensuite je parse le fichier obtenu avec cette fonction:
et j'enregistre les données obtenues dans la base mysql.
Voila en gros ce que je fais.
Mais j'ai ce problème d'accent ( je croyais que la recherche en base mysql était insensible à la casse)
Je rappelle donc que la recherche marche maintenant avec par exemple "réalisation" mais pas avec "realisation"
voila voila
j'utilise str_replace pour changer les codes:
& #233; => é
& #232;=>è
etc ......
je réenregistre ensuite le fichier ( fput) . ( par contre je n'arrive pas à avoir les retours chariot dans ce nouveau fichier, à la limite cela ne me gène pas)
Ensuite je parse le fichier obtenu avec cette fonction:
- Code: Tout sélectionner
function lit_xml1($fichier,$item,$champs) {
// on lit le fichier
if($chaine = @implode("",@file($fichier))) {
// on explode sur <item>
$tmp = preg_split("/<\/?".$item.">/",$chaine);
$nombre = sizeof($tmp);
// pour chaque <item>
for($i=1;$i<$nombre -1;$i+=2)
// on lit les champs demandés <champ>
foreach($champs as $champ) {
$tmp2 = preg_split("/<\/?".$champ.">/",$tmp[$i]);
// on ajoute au tableau
$tmp3[$i-1][] = @$tmp2[1];
}
// et on retourne le tableau
return $tmp3;
}
}
et j'enregistre les données obtenues dans la base mysql.
Voila en gros ce que je fais.
Mais j'ai ce problème d'accent ( je croyais que la recherche en base mysql était insensible à la casse)
Je rappelle donc que la recherche marche maintenant avec par exemple "réalisation" mais pas avec "realisation"
voila voila
ça y est je viens de trouver pourquoi " réalisation" était trouvé et pas "realisation"
En fait la base mysql était en latin1_general_ci , je l'ai mis en utf8_general_ci et maintenant cela fonctionne oufff...
Par contre , je vais quand même aller au bout des choses.
Comment dans le nouveau fichier que j'ai créé ( avant l'intégration en bdd) suite au remplacement des codes:
& #233; => é
& #232;=>è
etc ......
mettre les sauts de lignes ?
Même si cela n'est pas utile, j'aimerais quand même qu'il soit plus lisible si je dois aller y faire un tour.
J'utilise ce code :
Merci
En fait la base mysql était en latin1_general_ci , je l'ai mis en utf8_general_ci et maintenant cela fonctionne oufff...
Par contre , je vais quand même aller au bout des choses.
Comment dans le nouveau fichier que j'ai créé ( avant l'intégration en bdd) suite au remplacement des codes:
& #233; => é
& #232;=>è
etc ......
mettre les sauts de lignes ?
Même si cela n'est pas utile, j'aimerais quand même qu'il soit plus lisible si je dois aller y faire un tour.
J'utilise ce code :
- Code: Tout sélectionner
$fichier1 = file_get_contents('http://www.site.com/flux.xml');
$fichier1=str_replace("& #233;","é",$fichier1);
$fichier1=str_replace("& #232;","è",$fichier1);
$fichier1=str_replace("& #224;","à",$fichier1);
$fichier1=str_replace("& #234;","ê",$fichier1);
$fichier1=str_replace("& #239;","ï",$fichier1);
$fichier1=str_replace("& #235;","ë",$fichier1);
$fichier1=str_replace("& #251;","û",$fichier1);
$fichier1=str_replace("& #231;","ç",$fichier1);
$fichier1=str_replace("& #238;","î",$fichier1);
$fichier1=str_replace("& #226;","â",$fichier1);
$fichier1=str_replace("& #244;","ô",$fichier1);
$fp2 = fopen('essai.xml',"w");
fputs($fp2, "$fichier1");
fclose($fp2);
Merci
4 messages • Page 1 sur 1
Formation recommandée sur ce thème :
Formation Référencement naturel Google : apprenez une méthode efficace pour optimiser à fond le référencement naturel dans Google de façon durable... Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.
Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.
Lectures recommandées sur ce thème :
- Google Enterprise a son blog
- Google Sitemap Generator version 1.3
- Google Code publie des statistiques sur le codage HTML des pages web
- Le blog de Google Analytics
- Le blog officiel de Google Research
- Un (RSS) pour tous (les blogs officiels de Google)
- Le blog officiel de Google au Japon
- Le blog officiel de Google Custom Search (CSE)
- Le blog officiel de Google AdWords en français - Inside AdWords FR
- Annuaire WRI : intégration des flux XML des inscrits
- [XML et XSLT] Tester si une chaîne est un chemin XML valide
- [Résolu] [PHP - XML] Comment transformer XML en tableau
- Codage
- Pb de codage ?
- Flash/Xml: Redirection vers un XML+Gabarit XSLT si pas flash
- Aide codage
- Aide codage php
- Firefox et codage de caractères
- codage é è etc.. quoi qu'est ce?
- Problème de codage avec IE
- Connaitre le format de codage d'un fichier
- Help sur codage d'un site under ...
- Services petits boulots codage php
- codage module page Google
- Caractères accentués et codage HTML
Consultez la description détaillée des produits ou services de Google suivants : API Google Checkout
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités



le forum