encodage utf8 / iso 8859-1


rudddy
WRInaute accro
WRInaute accro
 
Messages: 2570
Inscription: 1 Aoû 2007

encodage utf8 / iso 8859-1

Message le Lun Fév 28, 2011 16:22

Bonjour,

j'ai un souci d'encodage qq part et je trouve pas le problème.

Sur http://www.info-maison-de-retraite.fr/maison-retraite,dp1-07,ardeche.html, les liens de navigation en bas affichent ardnyche au lieu de ardeche
- Tous mes fichiers sont encodés en utf8
- La BD est en iso8859-1
- Chaque query est précédée d'un "SET NAMES 'utf8'"
- L'affichage d'Ardèche dans la page est OK avec l'accent
- la pagination est appelée par ce script (super au passage) auquel a été rajouté ce script :
Code: Tout sélectionner
unction rename_string($var,$sep='-') {
   $var = strip_tags($var);
   $var = trim(strtolower($var));
   $var = strtr($var, "àáâãäåòóôõöøèéêëçìíîïùúûüÿñ", "aaaaaaooooooeeeeciiiiuuuuyn");
   $var = eregi_replace("'", " ", $var);
   $var = eregi_replace("/", " ", $var);
   
   $var1 = '';
   for($i=0;$i<=strlen($var)-1;$i++) {
   $tmp = $var{$i};
   if( eregi('[a-z]', $tmp) or eregi('[0-9]', $tmp) )
      $var1 .= $tmp;
   elseif( $tmp == ' ' or $tmp == $sep )
      $var1 .= $sep;
   }
   
   $imp = array();
   foreach( explode($sep, $var1) as $e ) {
      if( !empty($e) )
         $imp[] = $e;
      }
   
   return implode($sep, $imp);
}


Malgré ça, je bloque !

Merci de votre aide


e-kiwi
Modérateur
Modérateur
 
Messages: 15617
Inscription: 23 Déc 2003

Re: encodage utf8 / iso 8859-1

Message le Lun Fév 28, 2011 16:23

et ton fichier php a été enregistré avec quel jeu de caractères (voir avec pspad ou notepad++) ?


rudddy
WRInaute accro
WRInaute accro
 
Messages: 2570
Inscription: 1 Aoû 2007

Re: encodage utf8 / iso 8859-1

Message le Lun Fév 28, 2011 16:40

rudddy a écrit:Tous mes fichiers sont encodés en utf8


sinon je viens de voir grâce à spout que sprintf peut corrompre certaines chaines utf8, et le script de pagination est généré par sprintf ...

jcaron
WRInaute accro
WRInaute accro
 
Messages: 2685
Inscription: 13 Fév 2004

Re: encodage utf8 / iso 8859-1

Message le Lun Fév 28, 2011 17:30

Ce ne serait pas ton strtr le problème? C'est explicitement du single-byte, donc si ton source et/ou ta variable à examiner sont en UTF-8, ça va mal se finir... Et il n'y a pas de version multi-byte, donc tu ne peux t'en servir que sur du single-byte (ISO-8859-*, quoi).

De façon générale, le strtr c'est à mon avis pas la meilleure solution. Si tu as un php >= 5.3.0, tu peux tenter:
Code: Tout sélectionner
preg_replace('\pM','',normalizer_normalize($string, Normalizer::FORM_D))


Jacques.


rudddy
WRInaute accro
WRInaute accro
 
Messages: 2570
Inscription: 1 Aoû 2007

Re: encodage utf8 / iso 8859-1

Message le Lun Fév 28, 2011 18:53

non malheureusement j'ai un php < 5.3.0 :-(


seebz
WRInaute impliqué
WRInaute impliqué
 
Messages: 808
Inscription: 15 Avr 2007

Re: encodage utf8 / iso 8859-1

Message le Lun Fév 28, 2011 19:01

Faudrait penser à mettre à jour tes bookmarks, ca fait 2 ans que -seebz.be est devenu -seebz.net :mrgreen:

Bon sinon, peut-être que cette fonction pourrait t’intéresser (à n'appliquer que sur le nom de région sinon tes virgules vont aussi sauter)

jcaron
WRInaute accro
WRInaute accro
 
Messages: 2685
Inscription: 13 Fév 2004

Re: encodage utf8 / iso 8859-1

Message le Lun Fév 28, 2011 19:10

Dans ce cas, si tu veux utiliser strtr il faut que la chaîne à manipuler ET ton code source soient en iso-8859.

Alternative: preg_replace avec des arrays de part et d'autre, genre:
Code: Tout sélectionner
preg_replace(array('à','ã','é','è'),array('a','a','e','e'),$var)
(à compléter)

Autre option: htmlentities puis preg_replace pour virer les accents, voir par exemple http://uk.php.net/manual/en/function.preg-replace.php#90485

Jacques.


rudddy
WRInaute accro
WRInaute accro
 
Messages: 2570
Inscription: 1 Aoû 2007

Re: encodage utf8 / iso 8859-1

Message le Lun Fév 28, 2011 19:20

seebz a écrit:Faudrait penser à mettre à jour tes bookmarks, ca fait 2 ans que -seebz.be est devenu -seebz.net
:mrgreen: comme quoi je suis pas un nouvel admirateur ^^

seebz a écrit:Bon sinon, peut-être que cette fonction pourrait t’intéresser (à n'appliquer que sur le nom de région sinon tes virgules vont aussi sauter)


NICKEL !!!

merci bcp


rudddy
WRInaute accro
WRInaute accro
 
Messages: 2570
Inscription: 1 Aoû 2007

Re: encodage utf8 / iso 8859-1

Message le Lun Fév 28, 2011 19:21

jcaron a écrit:Autre option: htmlentities puis preg_replace pour virer les accents, voir par exemple http://uk.php.net/manual/en/function.preg-replace.php#90485

Jacques.

c'est exactement ta solution aussi

merci à vous 2

j'ai un dilemme : à qui je mets la reco ? :?: :?:


seebz
WRInaute impliqué
WRInaute impliqué
 
Messages: 808
Inscription: 15 Avr 2007

Re: encodage utf8 / iso 8859-1

Message le Lun Fév 28, 2011 19:34

rudddy a écrit: :mrgreen: comme quoi je suis pas un nouvel admirateur ^^

C'est vrai, et c'est pas la première fois que tu recommandes un de mes travaux il me semble (p'tit merci pour la cause :D )


rudddy a écrit:j'ai un dilemme : à qui je mets la reco ? :?: :?:

J'ai jamais compris l'intérêt donc je passe... et je préfère dix fois une recommandation du genre "super script au passage" :mrgreen:


rudddy
WRInaute accro
WRInaute accro
 
Messages: 2570
Inscription: 1 Aoû 2007

Re: encodage utf8 / iso 8859-1

Message le Lun Fév 28, 2011 19:48

donc c'est pour jcaron une reco et pour le belge, merci pour ton script !!!


Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités