URL-rewriting UTF8 et accents

Consultez la formation URL Rewriting et sites dynamiques de WebRankInfo / Ranking Metrics

Hyogapag
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 7
Inscription: 3 Mar 2005

URL-rewriting UTF8 et accents

Message le Dim Juin 25, 2006 15:12

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: Tout sélectionner
é
. 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: Tout sélectionner
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: Tout sélectionner
Divinit%26eacute%3B
par
Code: Tout sélectionner
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?


achtungbaby
WRInaute accro
WRInaute accro
 
Messages: 4066
Inscription: 14 Juin 2004

Message le Dim Juin 25, 2006 15:14

on ne met pas d'accents dans une url, il faut supprimer les accents.

Tilt
WRInaute impliqué
WRInaute impliqué
 
Messages: 858
Inscription: 26 Mar 2005

Message le Dim Juin 25, 2006 15:38

+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.
:)


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

Formation recommandée sur ce thème :

Formation URL Rewriting et sites dynamiques : apprenez comment mettre en place la réécriture d'URL, comment optimiser vos URL et profiter de vos pages dynamiques pour booster votre référencement. Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.

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 0 invités