[résolu] SimpleXML et encodage caractères
13 messages
• Page 1 sur 1
-

phpmikedu83 - WRInaute passionné

- Messages: 1281
- Inscription: 6 Aoû 2005
[résolu] SimpleXML et encodage caractères
Salut WRI,
J'ai un soucis pour parser des fichiers XML dont je ne maitrise pas la source (propreté de l'encodage des caractères)...
S'ils sont bien formés, pas de soucis, mais s'il y a des caractères non UTF8 (ou ISO selon la déclaration), ça plante (Normal)...
Comment, d'après vous, je peux détecter avant de parser ces caractères foireux et les remplacer par, au pire, un blanc...
Merci à toutes les brillantes idées qui vont fuser...
J'ai un soucis pour parser des fichiers XML dont je ne maitrise pas la source (propreté de l'encodage des caractères)...
S'ils sont bien formés, pas de soucis, mais s'il y a des caractères non UTF8 (ou ISO selon la déclaration), ça plante (Normal)...
Comment, d'après vous, je peux détecter avant de parser ces caractères foireux et les remplacer par, au pire, un blanc...
Merci à toutes les brillantes idées qui vont fuser...
Dernière édition par phpmikedu83 le Dim Aoû 19, 2007 23:52, édité 1 fois.
-

phpmikedu83 - WRInaute passionné

- Messages: 1281
- Inscription: 6 Aoû 2005
julienr a écrit:bienvenue à toi dans le club des 1000, alors c comment là haut
Merci, roff, ça doit pas être mal une mongolfière aussi
Sinon, pour revenir à mon problème, c'est que j'ai des caractères comme ça, par exemple:
- Code: Tout sélectionner
�
Et que si j'applique un utf8_encode, je vais avoir les accents qui apparaissent comme ça:
- Code: Tout sélectionner
é
C'est pas le but non plus...
En fait, je voudrais juste pouvoir virer les caractères pourris...
-

julienr - WRInaute impliqué

- Messages: 911
- Inscription: 5 Aoû 2003
- Code: Tout sélectionner
str_replace( '?', ' ', $xml );
phpmikedu83 a écrit:Et que si j'applique un utf8_encode, je vais avoir les accents qui apparaissent comme ça:
oui si tu cherches à afficher de l'UTF8 dans une page ISO
pour moi utf8_encode doit te permettre d'uniformiser tes caractères pour le simpleXml. Ensuite tout ce qui est dans l'objet XML doit passer dans un utf8_decode
-

cloacking - WRInaute impliqué

- Messages: 722
- Inscription: 20 Oct 2004
ça fait la même chose sur le Packrefplex, je vais donc essayer cette technique de STR replace en attendant ...
-

phpmikedu83 - WRInaute passionné

- Messages: 1281
- Inscription: 6 Aoû 2005
julienr a écrit:
- Code: Tout sélectionner
str_replace( '?', ' ', $xml );
phpmikedu83 a écrit:Et que si j'applique un utf8_encode, je vais avoir les accents qui apparaissent comme ça:
oui si tu cherches à afficher de l'UTF8 dans une page ISO
pour moi utf8_encode doit te permettre d'uniformiser tes caractères pour le simpleXml. Ensuite tout ce qui est dans l'objet XML doit passer dans un utf8_decode
au temps pour moi, mon document n'avait pas le bon charset...
pour autant, s'il existe un moyen de détecter ces caractères bizzaroïdes dans une chaîne, ça m'intéresse
- bozoleclown
- WRInaute impliqué

- Messages: 893
- Inscription: 24 Nov 2005
un début de solution ?
=> http://www.tux-planet.fr/blog/?2007/04/ ... age-en-php
=> http://www.tux-planet.fr/blog/?2007/04/ ... age-en-php
-

cloacking - WRInaute impliqué

- Messages: 722
- Inscription: 20 Oct 2004
Je viens de trouver ça http://64.233.183.104/search?q=cache:dN ... d=11&gl=fr
Mais pas encore de solution
Mais pas encore de solution
-

phpmikedu83 - WRInaute passionné

- Messages: 1281
- Inscription: 6 Aoû 2005
bozoleclown a écrit:un début de solution ?
=> http://www.tux-planet.fr/blog/?2007/04/ ... age-en-php
Non, car si je fait un htmlentities, ça rend ma string XML inexploitable...
Quand au mb_detect_encoding, il n'est d'aucune utilité, car le document contient des erreurs de caractères...
Ce que j'aimerais, et c'est pas plus mal, c'est détecter avant d'instancier la class que le document va poser problème et traiter l'erreur en ne parsant pas, par exemple...
-

cloacking - WRInaute impliqué

- Messages: 722
- Inscription: 20 Oct 2004
Cher voisin varois qui bosse aussi le dimanche
Je pense que mon lien plus haut signifie qu'il n'est en fait pas possible de modifier les ? car php analyse cela par une erreur et remplace automatiquement le caractère qui pose problème par ?
Je pense que mon lien plus haut signifie qu'il n'est en fait pas possible de modifier les ? car php analyse cela par une erreur et remplace automatiquement le caractère qui pose problème par ?
-

phpmikedu83 - WRInaute passionné

- Messages: 1281
- Inscription: 6 Aoû 2005
cloacking a écrit:Cher voisin varois qui bosse aussi le dimanche
Je pense que mon lien plus haut signifie qu'il n'est en fait pas possible de modifier les ? car php analyse cela par une erreur et remplace automatiquement le caractère qui pose problème par ?
Ok ok, dommage... mais là ça marche comme ça, tout en gardant les caractères bizzaroïdes qui sont évidemment reproduits par la suite... j'aurais préférer traiter ça comme une erreur avec mon script, mais bon!
- bozoleclown
- WRInaute impliqué

- Messages: 893
- Inscription: 24 Nov 2005
cloacking a écrit: car php analyse cela par une erreur et remplace automatiquement le caractère qui pose problème par ?
php n'analyse pas les chaînes de caractères et ne remplacent pas les caractères mal encodés par des "?"
c'est le navigateur qui n'arrive pas à décoder le caractère et qui met un "?" ou au truc bizarrerie à la place.
php ne fait qu'envoyer des chaînes de caractères (suite d'octets) au navigateur qui lui interprète ces suites d'octets en fonction du charset déclaré.
-

phpmikedu83 - WRInaute passionné

- Messages: 1281
- Inscription: 6 Aoû 2005
A force d'acharnement, j'ai trouvé comment identifier un mauvais document XML (avec des caractères qui ne correspondent pas charset)
si:
renvoi true, c'est qu'il y a des caractères foireux dans le fichier XML
ça permet d'intercepter l'erreur et de la traiter... ce qui me ravie
si:
- Code: Tout sélectionner
ereg( chr(195) , utf8_decode($flux) );
renvoi true, c'est qu'il y a des caractères foireux dans le fichier XML
ça permet d'intercepter l'erreur et de la traiter... ce qui me ravie
13 messages
• Page 1 sur 1
Lectures recommandées sur ce thème :
- Encodage de caractères
- Jom comment encodage des caractères
- Encodage des caractères : je suis paumé...
- Problème caractères bizzares dans Google (encodage...?)
- Gmail - Imap : Problème encodage caractères spéciaux
- encodage caractères spéciaux dans balises méta
- Influence des accents: encodage natif ou caractères spéciaux
- [API Google] Encodage des caractères de la cat. DMOZ
- [Résolu] Encodage en Unicode
- encodage des caractères : ça marche, ça marche pas
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités
