Transformation de caractères lors d'un fopen sur url distante

Transformation de caractères lors d'un fopen sur url distante - PHP - Programmation

Marsh Posté le 11-09-2005 à 13:13:57    

:hello:  
 
Je tente de récupérer une page de wikipédia automatiquement par un script php. La page que je recois est en utf-8 que je retransforme en iso-8859-1 via la fonction utf8_decode.
 
Tout se passe bien sauf pour quelques caractères style les lettres greques. Alors que sur la page de wikipédia elles s'affichent bien, chez moi un caractère 'alpha' est transformé en 'α' dans la chaine téléchargée, qui se traduit après le passage par utf8_decode en un '?'.
 
Là je dois dire que je nage complètement... Si quelqu'un à une idée pour que tous les caractères s'affichent bien :)


---------------
Techno-science.net: Actualité des sciences et techniques
Reply

Marsh Posté le 11-09-2005 à 13:13:57   

Reply

Marsh Posté le 11-09-2005 à 16:49:48    

Et si tu l'as laisse en utf-8, il se passe quoi ?

Reply

Marsh Posté le 11-09-2005 à 17:10:16    

Initialement en utf-8 le caractère alpha est afiché 'α', même si je mets le code de la page en utf-8 au lieu de iso-8859-1


Message édité par @ttil@ le 11-09-2005 à 17:11:30

---------------
Techno-science.net: Actualité des sciences et techniques
Reply

Marsh Posté le 11-09-2005 à 17:38:16    

Et un url-decode au lieux du utf_decode, ca done quoi?

Reply

Marsh Posté le 11-09-2005 à 17:52:59    

Ca semble rien faire sur la chaine.
 
Pour info voici le texte sur la page wikipédia (source de la page, page codé  en utf-8):

Citation :

Dans le sens commun, le terme « radiation » est associé à la radioactivité, cela concerne donc les rayonnements ionisants (rayons X, 'alpha', 'beta', 'gamma').


(j'ai transformé les lettres grecques 'alpha', 'beta', 'gamma' par ces termes sinon ca passe pas sur hfr, mais le texte original est visible sur la page wikipédia ici: http://fr.wikipedia.org/wiki/Radiation )
 
Le texte que je retrouve juste après téléchargement par fread ou file:

Citation :

Dans le sens commun, le terme « radiation » est associé à  la radioactivité, cela concerne donc les rayonnements ionisants (rayons X, α, β, γ).


 
Et après passage avec utf8_decode:

Citation :

Dans le sens commun, le terme « radiation » est associé à la radioactivité, cela concerne donc les rayonnements ionisants (rayons X, ?, ?, ?).


Message édité par @ttil@ le 11-09-2005 à 17:57:07

---------------
Techno-science.net: Actualité des sciences et techniques
Reply

Marsh Posté le 11-09-2005 à 18:13:51    

les ? c'est quand les caractéres n'ont pas pu être traduit par la fonction utf8_decode, il faudrait essayer avec les mb_convert_encoding et mb_detect_encoding si elles sont disponibles.
Elles sont plus puissante que l'utf8_decode mais ne sont pas installé par défaut.

Reply

Marsh Posté le 11-09-2005 à 18:25:38    

Je viens de tester avec ces deux fonctions.
 
mb_detect_encoding me dit bien que la chaine d'origine est en UTF-8 mais l'utilisation de mb_convert_encoding pour une conversion de UTF-8 vers ISO-8859-1 me donne le même résultat que utf8_decode, les '?' sont toujours là.
 


---------------
Techno-science.net: Actualité des sciences et techniques
Reply

Marsh Posté le 11-09-2005 à 18:31:35    

Je veisn de penser à un truc super con : t'es sur que les caractéres grec font partie de l' ISO-8859-1 ?
Il va peut être falloir que tu fasses l'inverse : tout mettre en UTF-8.

Reply

Marsh Posté le 11-09-2005 à 18:32:43    

Est-il possible que fread transforme l'encoding du teste pendant qu'il le récupère à distance ? Car c'est le texte juste après fread qui est transformé comme ca.


---------------
Techno-science.net: Actualité des sciences et techniques
Reply

Marsh Posté le 11-09-2005 à 18:33:29    

omega2 a écrit :

Je veisn de penser à un truc super con : t'es sur que les caractéres grec font partie de l' ISO-8859-1 ?
Il va peut être falloir que tu fasses l'inverse : tout mettre en UTF-8.


 
J'espere pas :sweat:


---------------
Techno-science.net: Actualité des sciences et techniques
Reply

Marsh Posté le 11-09-2005 à 18:33:29   

Reply

Marsh Posté le 11-09-2005 à 18:38:02    

Je te comprends, je suis entrein de le faire chez moi. Heureusement que je refaisais le site à zéro par ce que ca fait beaucoup de lignes de codes à modifier si on doit le faire pour un site qui existe déjà.

Reply

Marsh Posté le 11-09-2005 à 18:48:51    

Ya peut etre un autre moyen. Je viens de voir qu'on peut afficher le caractere alpha avec le code html α
il doit peut etre exister des fonctions de translation vers ce code html.


---------------
Techno-science.net: Actualité des sciences et techniques
Reply

Marsh Posté le 11-09-2005 à 19:00:50    

htmlentities mais je sais pas elle marche depuis de l'UTF8.
Sinon, il faudra que tu te fasses ta fonction qui faitr pareil en UTF8 si ca existe aps déjà.

Reply

Marsh Posté le 11-09-2005 à 19:11:50    

La table de conversion de htmlentities n'est pas aussi complete, je vais voir si il n'en existe pas une autre sur le net compatible utf-8 sinon je la ferais effectivement moi-même.


---------------
Techno-science.net: Actualité des sciences et techniques
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed