captain_torche Posté 10 Septembre 2007 Posté 10 Septembre 2007 Je suis en train de travailler sur un petit crawler, et je bute contre un ecueil : je récupère bien le code des pages, mais si celles-ci comportent des accents, ceux-ci se trouvent parfois transformés en points d'interrogation. Comment faire pour convertir la chaîne que je récupère en ISO ? J'ai bien essayé la méthode trouvée ici (http://www.phpcs.com/codes/CONVERTIR-CHAIN...8859_40867.aspx), mais elle semble ne pas fonctionner dans mon cas (le souci est-il bien dû à l'UTF-8, d'ailleurs ?).
Jeanluc Posté 10 Septembre 2007 Posté 10 Septembre 2007 (modifié) Toutes les pages n'ont pas le même encodage. Il faut d'abord déterminer l'encodage utilisé dans la page que tu analyses. Soit tu essaies de deviner le type d'encodage en examinant le texte de la page, soit tu te bases sur l'en-tête HTTP et la META "Content-Type". Une fois que cela est fait, il existe des fonctions PHP pour convertir l'UTF-8 en ISO ou inversement (comme expliqué dans l'article que tu cites). Jean-Luc Modifié 10 Septembre 2007 par Jeanluc
captain_torche Posté 10 Septembre 2007 Auteur Posté 10 Septembre 2007 Le souci, c'est quand je fais un "transcodage" inconditionnel (je passe tout à la moulinette utf8_decode() pour tester), ces points d'interrogation subsistent. C'est pour ça que je me demandais si le problème venait bien de l'UTF8 ou d'autre chose.
Dudu Posté 10 Septembre 2007 Posté 10 Septembre 2007 Salut captain_torche je passe tout à la moulinette utf8_decode() pour tester Le problème vient vraisemblablement de là Vincent parle de cette fonction dans un billet de son blog intitulé PHP, MySQL, et UTF-8 sont sur un bateau en ces termes: Oui mais en fait, ce n'est pas si simple, car la fonction utf8_decode() est destructrice, cest à dire que les caractères dans la chaîne qui nont pas déquivalent en latin1 seront remplacés par un point dinterrogation. Les points d'interrogation que tu récupères sont-ils effectivement, dans les pages crawlées, des caractères qui n'existent pas en ISO-8859-1 (Latin-1) ? Si oui, tu as ta réponse. Quoiqu'il en soit, vérifier l'encodage via l'en-tête HTTP me semble primordial comme le dit Jeanluc. Bon courage.
captain_torche Posté 11 Septembre 2007 Auteur Posté 11 Septembre 2007 Merci pour l'info, je vais tenter une autre approche : tout mettre en UTF-8 par défaut. Edit : Bon, dans ce sens ça fonctionne à merveille. Vive l'UTF-8 !
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant