Gestion de caractères en UTF-8
21 messages
• Page 1 sur 2 • 1, 2
Consultez la formation à Google Analytics de WebRankInfo / Ranking Metrics
-

ecocentric - WRInaute accro

- Messages: 3602
- Inscription: 10 Fév 2004
Gestion de caractères en UTF-8
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é

- Messages: 525
- Inscription: 1 Sep 2004
Changer automatiquement toutes les apostrophes par de simples quotes ?
-

ecocentric - WRInaute accro

- Messages: 3602
- Inscription: 10 Fév 2004
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

- Messages: 3602
- Inscription: 10 Fév 2004
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
-

ecocentric - WRInaute accro

- Messages: 3602
- Inscription: 10 Fév 2004
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

- Messages: 3602
- Inscription: 10 Fév 2004
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 '
Vous en conviendrez, c'est vraiment très très crade (vive les phrases interrogatives
- shrom
- WRInaute impliqué

- Messages: 865
- Inscription: 5 Juil 2004
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

- Messages: 3602
- Inscription: 10 Fév 2004
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

- Messages: 3602
- Inscription: 10 Fév 2004
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)
.
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 impliqué

- Messages: 538
- Inscription: 2 Fév 2004
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

- Messages: 3602
- Inscription: 10 Fév 2004
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 occasionnel

- Messages: 341
- Inscription: 21 Avr 2004
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 ?
@+
21 messages
• Page 1 sur 2 • 1, 2
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 les experts Google Analytics de Ranking Metrics.
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é


