Problème d'encodage

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Problème d'encodage

par AB » 13 févr. 2009, 18:29

Et les fonctions urlencode() et urldecode() elles ne peuvent t'être d'aucune utilité ?

par VaN » 13 févr. 2009, 17:51

Je viens poster une solution, bien que je n'en sois vraiment pas fier..

J'ai modifié ma fonction stripAccents(), en ajoutant un nouveau pattern :
$pattern03 = array("/á/", "/à /", "/â/", "/ç/", "/é/", "/è/", "/ê/", "/î/", "/ï/", "/ô/", "/û/");
$string = preg_replace($pattern03, $rep_pat, $string);
qui correspond aux caractères accentués encodés en ANSI.

Il reste juste un petit problème, le caractère à n'est pas remplacé, car à n'a pas l'air d'être la bonne valeur.

Je ne suis vraiment pas fier de cette méthode, car j'ai bien conscience que c'est un pansement, et non une solution, mais je suis très pressé par le temps, donc je m'en contente pour le moment. Peut être cela servira t'il à d'autres dans la même position que moi..

[Note : ce message a été posté de manière anonyme avant d'être réattribué à son auteur]

Problème d'encodage

par VaN » 13 févr. 2009, 15:36

Bonjour,

Voici mon problème :

Sur une page, j'ai le lien suivant :

Code : Tout sélectionner

<a href="5-Qu est ce qu un prêts relais?.html">Qu est ce qu' un prêts relais?</a>
Il est en HTML, car je fais de l'URL Rewriting dessus.

Lorsque je clique dessus, le navigateur renvoie
The requested URL /dev/5-Qu est ce qu un prêts relais was not found on this server.
le charset du site est UTF-8 :

Code : Tout sélectionner

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
Mais le champs de la table SQL dont est tiré le nom de la page est en
latin1_swedish_ci
Au final, je voudrais réussir à supprimer tous les caractères accentués du lien.

Pour le moment, j'en suis à là :
function stripAccents($string){
	$pattern01 = array("/&aacute;/", "/&agrave;/", "/&acirc;/", "/&ccedil;/", "/&eacute;/", "/&egrave;/", "/&ecirc;/", "/&icirc;/", "/&iuml;/", "/&ocirc;/", "/&ucirc;/");
	$pattern02 = array("/á/", "/a/", "/â/", "/ç/", "/é/", "/è/", "/ê/", "/î/", "/i/", "/ô/", "/û/");
   $rep_pat = array("a", "a", "a", "c", "e", "e", "e", "i", "i", "o", "u");
   $string = preg_replace($pattern01, $rep_pat, $string);
   $string = preg_replace($pattern02, $rep_pat, $string);
	
	return $string;
}

$page_rewritted['page_title'] = stripslashes($page['page_title']);
$page_rewritted['page_title'] = str_replace("'", "", $page_rewritted['page_title']);
$page_rewritted['page_title'] = stripAccents(htmlspecialchars($page_rewritted['page_title']));
						
$link = $page['page_id']."-".$page_rewritted['page_title'].".html";
echo '<a href="'.$link.'">'.stripslashes($page['page_title']).'</a><br />';
Je suis assez pressé par le temps, et j'aimerai très vite corriger ce problème, même si la solution adoptée n'est pas la plus propre/la meilleure.

Comment puis-je régler rapidement ce problème ?