Gestion de caractères en UTF-8

Consultez la formation à Google Analytics de WebRankInfo / Ranking Metrics


ecocentric
WRInaute accro
WRInaute accro
 
Messages: 3577
Inscription: Mar Fév 10, 2004 16:40

Gestion de caractères en UTF-8

Message le Mer Juil 06, 2005 7:03

Je dispose d'un script de création de flux RSS en ISO latin. Il gère assez mal les encodages UTF-8, ce qui se traduit par des problèmes de caractères accentués. J'ai donc développé une routine de détection du charset, ce qui me permet de faire un url_decode quand il faut. Le problèmes des caractères accentués est alors réglé. Le problème restant concerne les apostrophe ' arrondies, qui apparaissent sous la forme d'un "?". Quelqu'un voit-il comment régler ce dernier problème ?


MarvinLeRouge
WRInaute impliqué
WRInaute impliqué
 
Messages: 451
Inscription: Mer Sep 01, 2004 20:10

Message le Mer Juil 06, 2005 9:22

Changer automatiquement toutes les apostrophes par de simples quotes ?


sietjp
WRInaute passionné
WRInaute passionné
 
Messages: 622
Inscription: Dim Déc 14, 2003 21:05

Message le Mer Juil 06, 2005 9:31

Je ne comprends pas bien le système, est ce toi qui génère le RSS ou veux tu simplement afficher un RSS iso-latin sur ton site en utf-8?


mowmow
WRInaute passionné
WRInaute passionné
 
Messages: 975
Inscription: Mer Nov 03, 2004 9:40

Message le Mer Juil 06, 2005 9:39



ecocentric
WRInaute accro
WRInaute accro
 
Messages: 3577
Inscription: Mar Fév 10, 2004 16:40

Message le Mer Juil 06, 2005 10:02

MarvinLeRouge a écrit:Changer automatiquement toutes les apostrophes par de simples quotes ?


C'est à cela que j'ai pensé au départ, avec un strtr, mais ça ne marche pas.

mowmow a écrit:http://fr.php.net/utf8-decode ?

sietjp a écrit:Je ne comprends pas bien le système, est ce toi qui génère le RSS ou veux tu simplement afficher un RSS iso-latin sur ton site en utf-8?


Je fais le tout, en fait.
J'affiche du RSS sur un site ISO Latin. Mais je dispose aussi d'un système qui analyse un site de news (qui peut être en UTF8) sans RSS et qui crée le RSS (en ISO Latin). C'est là que j'ai un problème. Je détecte bien le charset du site, je fais un UTF8-decode, les caractères accentués passent bien mais pas les apostrophes.


ecocentric
WRInaute accro
WRInaute accro
 
Messages: 3577
Inscription: Mar Fév 10, 2004 16:40

Message le Mer Juil 06, 2005 10:04

sietjp a écrit:Je ne comprends pas bien le système, est ce toi qui génère le RSS ou veux tu simplement afficher un RSS iso-latin sur ton site en utf-8?


J'ai le même problème lorsque je lis un flux UTF8 et que je l'affiche en ISO-Latin. Voici un exemple où ce problème d'apostrophe se pose : http://www.retronimo.com/annuaire/autom ... hp?id=0199

shrom
WRInaute passionné
WRInaute passionné
 
Messages: 865
Inscription: Lun Juil 05, 2004 22:37

Message le Mer Juil 06, 2005 10:40

Une solution serait de passer par les entités HTML.


ecocentric
WRInaute accro
WRInaute accro
 
Messages: 3577
Inscription: Mar Fév 10, 2004 16:40

Message le Mer Juil 06, 2005 10:50

shrom a écrit:Une solution serait de passer par les entités HTML.


Sans doute mais je n'ai pas le contrôle de la source. La source peut être codée avec les pieds, avec des encodages divers.


ecocentric
WRInaute accro
WRInaute accro
 
Messages: 3577
Inscription: Mar Fév 10, 2004 16:40

Message le Mer Juil 06, 2005 10:53

MarvinLeRouge a écrit:Changer automatiquement toutes les apostrophes par de simples quotes ?


En fait, j'ai oublié de dire, il y a truc crade qui marche. Vu qu'il me met des ? à la place des ' arrondis (et, dans mon cas, apparemment, à la place de rien d'autre), je peux remplacer les ? par des ' :oops: .
Vous en conviendrez, c'est vraiment très très crade (vive les phrases interrogatives :lol: ), donc je cherche autre chose...

shrom
WRInaute passionné
WRInaute passionné
 
Messages: 865
Inscription: Lun Juil 05, 2004 22:37

Message le Mer Juil 06, 2005 12:13

ecocentric a écrit:
shrom a écrit:Une solution serait de passer par les entités HTML.


Sans doute mais je n'ai pas le contrôle de la source. La source peut être codée avec les pieds, avec des encodages divers.


Tu veux dire que dans un flux RSS, tu peux avoir un mélange ISO-8859-1 et UTF-8. Ces gens là ne méritent même pas qu'on utilise leur flux.

Sinon, c'est pas compliqué, si rien n'est indiqué, le flux DOIT être en UTF-8, sinon c'est l'encodage spécifié.

Je me sers de flux de type RSS sur la plupart de mes sites, quand un site ne respecte pas la norme, le flux passe à la poubelle et c'est tout. Il y a assez de flux divers et variés pour ne pas à avoir à s'embeter avec ceux qui ne veulent pas faire l'effort de faire un flux RSS correct.


ecocentric
WRInaute accro
WRInaute accro
 
Messages: 3577
Inscription: Mar Fév 10, 2004 16:40

Message le Mer Juil 06, 2005 13:26

shrom a écrit:
ecocentric a écrit:
shrom a écrit:Une solution serait de passer par les entités HTML.


Sans doute mais je n'ai pas le contrôle de la source. La source peut être codée avec les pieds, avec des encodages divers.


Tu veux dire que dans un flux RSS, tu peux avoir un mélange ISO-8859-1 et UTF-8. Ces gens là ne méritent même pas qu'on utilise leur flux.

Sinon, c'est pas compliqué, si rien n'est indiqué, le flux DOIT être en UTF-8, sinon c'est l'encodage spécifié.

Je me sers de flux de type RSS sur la plupart de mes sites, quand un site ne respecte pas la norme, le flux passe à la poubelle et c'est tout. Il y a assez de flux divers et variés pour ne pas à avoir à s'embeter avec ceux qui ne veulent pas faire l'effort de faire un flux RSS correct.


Ce que je veux dire, c'est que les flux RSS sont souvent mal formés. Ca, je sais gérer relativement bien (j'ai 2 lecteurs RSS qui se partagent la tâche, le second sachant rattraper certaines erreurs du premier...). Vu que je gère un annuaire - lecteur RSS, il faut bien que je me débrouille. L'outil de syndication que je suis en train de terminer permet justement de sortir des flux "nettoyés" sur base d'entrées potentiellement mal codées.

Ce que je gère moins bien, c'est l'encodage. Notamment, la conversion d'UTF8 vers ISO Latin pose problème. Le problème vient de l'apostrophe arrondie, que la fonction utf8-decode change en un ?. Je pense que le problème vient du fait que ce caractère n'a pas d'équivalent en ISO, donc la fonction ne sait pas le convertir. Mais je ne suis pas sûr et me demande comment gérer ce problème proprement.


ecocentric
WRInaute accro
WRInaute accro
 
Messages: 3577
Inscription: Mar Fév 10, 2004 16:40

Message le Mer Juil 06, 2005 19:18

Bon, en fait, c'est le caractère unicode 8217 qui pose problème. Il tient sur 3 octets et n'est pas représentable tel quel en ISO Latin. Donc, utf8_decode le remplace par un ? puisqu'il n'y a pas d'équivalent en ISO latin.

Pour s'en sortir, je n'ai rien trouvé de mieux pour le moment qu'analyser la chaîne avant conversion par utf8_decode, de manière à identifier les blocs de 3 caractères correspondant au caractère Unicode 8217.

L'idéal pour la suite serait peut-être de baculer tout le site en UTF8 et de pouvoir travailler en d'ISO vers UTF et d'UTF vers UTF plutôt que ISO vers ISO et UTF vers ISO (ce qui pose parfois problème) :?: .

sgaze
WRInaute passionné
WRInaute passionné
 
Messages: 538
Inscription: Lun Fév 02, 2004 16:54

Message le Ven Juil 29, 2005 11:34

Pour info, j'ai réussi à me sortir du même problème ainsi :
Code: Tout sélectionner
$title = iconv("UTF-8", "ISO-8859-1//TRANSLIT", $item['title']);


ecocentric
WRInaute accro
WRInaute accro
 
Messages: 3577
Inscription: Mar Fév 10, 2004 16:40

Message le Ven Juil 29, 2005 17:36

sgaze a écrit:Pour info, j'ai réussi à me sortir du même problème ainsi :
Code: Tout sélectionner
$title = iconv("UTF-8", "ISO-8859-1//TRANSLIT", $item['title']);


Ah, ok, merci pour l'info, je vais regarder ça !


papayou
WRInaute impliqué
WRInaute impliqué
 
Messages: 341
Inscription: Mer Avr 21, 2004 11:38

Message le Lun Aoû 20, 2007 18:40

ecocentric a écrit:
sgaze a écrit:Pour info, j'ai réussi à me sortir du même problème ainsi :
Code: Tout sélectionner
$title = iconv("UTF-8", "ISO-8859-1//TRANSLIT", $item['title']);


Ah, ok, merci pour l'info, je vais regarder ça !


Bonjour,

Y a-t-il une solution quand la fonction Iconv n'est pas disponible ?

@+

Gestion de caractères en UTF-8

Formation recommandée sur ce thème :

Formation Google Analytics : en 2 jours, apprenez comment exploiter l'essentiel des possibilités de l'outil de mesure d'audience de Google. Formation animée par Julien Coquet, expert certifié officiellement par Google Analytics.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité