lecture d'un fichier xml : encodage ?

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : lecture d'un fichier xml : encodage ?

Re:[résolu] lecture d'un fichier xml : encodage ?

par laurents » 14 nov. 2011, 17:44

Grâce à ton aide, c'est résolu (un tout grand merci) : j'ai commencé comme tu me le conseillais par utiliser ord ; j'ai ainsi vu le code ascii du carré, puis je l'ai remplacé par 32 :
$url=str_replace(chr(160),chr(32),$url);
(le code du carré est 160)
Et je sais bien que les espaces ds les urls, c'est pas terrible (Windows n'aime pas), mais ces fichiers xml, je ne les choisis pas (ils sont présents sur un intranet et sont liés au carnet d'adresse).

Re: lecture d'un fichier xml : encodage ?

par macgawel » 14 nov. 2011, 16:51

Ce ne sont pas les mêmes :
 echo "comparaison:".strcmp($url,$url_dur)."<br>";
  echo "url:".$url."<br>";
  echo "url_dur:".$url_dur."<br>";
et d'ailleurs, le echo le montre : en dûr, il y a espace, et récupéré du xls, l'espace est remplacé par un carré (d'où encore une fois, je pense à un problème d'encodage). Mais que faire ?
Comme quoi il y a une différence :mrgreen:

- Il y a des différences/problèmes avec les accents ? Parce que c'est souvent les premiers trucs qui prennent en cas de problème d'encodage.
- Ce qui serait bien, ce serait de savoir à quoi correspond ce "carré". Voir la fonction ord().
- A partir de là, une solution simple, c'est de passer la chaîne à la moulinette, pour transcrire les carrés en blanc...

Accessoirement, l'usage d'espaces est déconseillé dans les URL :roll:

Re: lecture d'un fichier xml : encodage ?

par laurents » 14 nov. 2011, 16:29

Ce ne sont pas les mêmes :
 echo "comparaison:".strcmp($url,$url_dur)."<br>";
  echo "url:".$url."<br>";
  echo "url_dur:".$url_dur."<br>";
et d'ailleurs, le echo le montre : en dûr, il y a espace, et récupéré du xls, l'espace est remplacé par un carré (d'où encore une fois, je pense à un problème d'encodage). Mais que faire ?

Re: lecture d'un fichier xml : encodage ?

par macgawel » 14 nov. 2011, 16:09

Et pour comparer le nom du xls avec celui en dûr, tu imagines quoi, vu que si je fais un echo, ils sont identiques (d'où ma pensée à un problème d'encodage) ?
Si j'ai bien suivi, tu prends ton fichier XLS, tu extrais les noms et tu t'en sers pour générer une URL ?
Il faudrait comparer cette URL avec celle que tu obtiens en utilisant le nom en dur...

Re:[résolu] lecture d'un fichier xml : encodage ?

par laurents » 14 nov. 2011, 15:57

Quel est le problème au juste ?
Tu as raison ; j'ai sauté des points importants, mais tu as bien deviné : c'est la récupération de ce nom depuis le xls qui n'est pas bonne. Voici un extrait du code de récupération des données :
require_once 'excel_reader2.php';
if (isset($_SESSION['nom_fichier'])) 
{ 
$ind=0;
$data = new Spreadsheet_Excel_Reader($_SESSION['nom_fichier']);
$patr="2";
$lastname=$data->val($patr,"3");

while (isset($lastname)&&($lastname!="")) { 
$lastname=$data->val($patr,"3");
$firstname=$data->val($patr,"4");
$patr++;
if ($lastname!="") 
{
$user[$ind]=$lastname.'|'.$firstname;
$ind++;
}}
Je ne connais pas le fichier 'excel_reader2.php' car je m'appuie sur cet outil. Tout ce que je peux dire, c'est qu'il y a environ 1700 lignes de code...
Et pour comparer le nom du xls avec celui en dûr, tu imagines quoi, vu que si je fais un echo, ils sont identiques (d'où ma pensée à un problème d'encodage) ?

Re: lecture d'un fichier xml : encodage ?

par macgawel » 14 nov. 2011, 15:33

En général, l'encodage de l'URL (récupéré par mb_detect_encoding($url) ) est de l'ASCII et ça se passe bien ; par contre, il y a un problème si le patronyme est composé en plusieurs morceaux et qu'il vient de ce fichier xls (car si je mets en dûr $lastname="nom en plusieurs parties", ça se passe bien aussi).
Bonjour.

Quel est le problème au juste ?
Si j'ai bien compris, c'est la récupération du nom à partir du fichier XLS qui pose problème ? Dans ce cas, pourquoi n'avoir pas mis le code correspondant ?
Toujours si j'ai bien compris, c'est l'URL créée qui est foireuse. Vu que l'URL générée "en dur" est correcte, il faudrait comparer le patronyme récupéré sur le XLS avec celui "en dur"...

lecture d'un fichier xml : encodage ?

par laurentsc » 14 nov. 2011, 15:21

Bonjour,

je récupère en PHP une liste de noms issue d'un fichier xls, et pour chacun de ces noms, je construis une url :
$url="http://---=".$lastname.","
et ensuite je lis le fichier xml pointé par cette url :
$res=$dom->load($url);  
  $listeText = $dom->getElementsByTagName('text');
  $i=0;
    if ($res) { foreach($listeText as $text) {
	
	if (!(($i++)%3)) {

    $patronyme=strtolower($text->firstChild->nodeValue);
	echo "patr=".$patronyme."<br>";
}}}
Bien sûr, ce code n'est qu'essai.
En général, l'encodage de l'URL (récupéré par mb_detect_encoding($url) ) est de l'ASCII et ça se passe bien ; par contre, il y a un problème si le patronyme est composé en plusieurs morceaux et qu'il vient de ce fichier xls (car si je mets en dûr $lastname="nom en plusieurs parties", ça se passe bien aussi). C'est donc clairement un problème d'encodage. Quelqu'un saurait-il comment je peux m'en sortir ?