URL-rewriting UTF8 et accents

Nouveau WRInaute
Bonjour,
j'ai un petit problème d'URL-Rewriting et d'accents.
Voilà la situation. L'URL de base, sans rewriting, ressemble à cela : site.php?foo=bar&foo2=bar2. Rien de bien méchant donc. J'ai fait un URL Rewriting qui produit une URL de type domaine.com/bar/bar2.html
Tant qu'il n'y a pas d'accent, je n'ai aucun problème. Seulement voilà, en fait la variable bar2 correspond à une valeur se trouvant dans une base de données, et mes pages sont encodées en UTF-8. Donc tous les accents de la page sont exprimés par des caractères du type
Code:
é
. Donc toutes les données de la base de données sont codées de même. Pour transposer les variables dans l'URL, j'utilise la fonction rawurlencode. Donc si la valeur dans ma base de données à rechercher est Divinité, le mot est codé comme suit :
Code:
Divinit%26eacute%3B
. Tant qu'il s'agit de l'URL normal, aucun problème. Mais en URL-rewriting, j'obtiens le simple message "erreur" (mais s'il n'y a pas d'accent, tout va bien). Si je remplace, dans l'URL réécrit,
Code:
Divinit%26eacute%3B
par
Code:
Divinit%E9
, bien entendu le mot n'est pas trouvé dans la base de données.

Quelqu'un sait-il comment je peux résoudre ce problème?
 
WRInaute impliqué
+1 mais si c'est vraiment nécessaire, tu dois récupérer ta variable foo "divinité" comme suit:
$a=Divinit%26eacute%3B //variable récupérée dans l'url
$a=urldecode($a);
et $a fait "Divinité"
magique!
mais si je peux te donner un tuyau:
dans ta bdd, ne stockes pas du html avec des entités html (é etc...). tu stockes du texte, sinon tes recherches textuelles te donnent de gros ennuis.
Le mieux:
1/ stocker "divinité" dans la bdd.
2/ lancer une fonction qui transforme "divinité" en "divinite"
3/ appeler http://domaine.com/divinite/ qui, rewrité, te donne x.php?foo=divinite
4/ et là seulement, lancer ta recherche textuelle bdd insensible aux accents. tu auras comme résultats et les occurennces de "divinité" et celles de "divinite".
pas compliqué en fait.
:)
 
Discussions similaires
Haut