5568 sujets

Sémantique web et HTML

Bonjour,

Wikipédia utilise des caractères accentués dans ses URL. Je trouve ça plus lisible et j'ai décidé de faire de même.

J'ai donc... simplement écrit mes liens HTML avec des accents !

<a href="/accents-éêè">lien avec accents</a>


Et c'est tout. Ca fonctionne ! Autant dans le navigateur, que côté PHP. La page est en plus valide HTML 5 (UTF-8) selon le W3C.

C'est aussi simple que ça ou j'ai loupé qqch ? Plusieurs sites web parlent d'encoder les URL, mais je n'ai rien fait de tout ça ?

Est-ce que c'est un mauvais choix de conception de passer aux caractères spéciaux dans l'URL ?

Merci pour votre aide !
Modifié par sunseb (16 Nov 2010 - 04:14)
Bonjour,

Actuellement, les navigateurs et les serveurs se débrouillent plutôt bien avec les caractères accentués. Ce n'était pas vrai il y a quelques années.

Il peut quand même y avoir des problèmes, mais ce n'est pas tellement mon domaine donc je n'ai pas d'exemples précis.

Vis-à-vis de la validation de page, l'URL ne rentre pas en jeu, donc aucun risque de ce côté là.
Hello,

ll y a eu plusieurs standards successifs pour les URL/URI/IRI. Et les versions de HTML font sans doute référence à ces standards successifs. C'est un peu complexe à suivre. Smiley smile

Il me semble que les requêtes HTTP se font toujours avec des caractères ASCII uniquement pour le chemin du fichier, donc pas de lettres accentuées, mais il y a aussi un mécanisme d'échappement des caractères non-ASCII: http://en.wikipedia.org/wiki/Percent-encoding

Quand tu cliques ton lien <a href="/accents-éêè">, le navigateur va faire une requête HTTP qui commence comme ça:
GET /accents-%C3%A9%C3%AA%C3%A8 HTTP/1.1[CRLF]
Host: example.org
...

Ensuite le serveur décode l'URL, tente de trouver le fichier (ou passe l'URL en paramètre à un script), et vogue la galère.

Donc oui, c'est parfaitement possible d'avoir des caractères non-ASCII dans les URL, si le serveur et l'application web gèrent ça correctement.

Du côté des navigateurs, il faut voir si:
- le navigateur va afficher le caractère interprété plutôt que le code %XX dans la barre d'adresse (c'est le cas des navigateurs modernes, mais pas de Firefox 2 ou IE6 il me semble... à voir);
- si le navigateur est capable de faire une requête HTTP correcte si ton code HTML est <a href="/accents-éêè">.

Pour le premier cas de figure, si le navigateur est ancien et ne gère pas ça de manière transparente on ne peut pas y faire grand chose. Le site marchera bien, mais l'affichage dans la barre d'adresse ne sera pas sexy.
Pour le deuxième cas, si le problème se pose (ou si on veut être prudent) on peut encoder toutes les URL dans le code HTML. Pour faire ça manuellement, tu peux utiliser un outil comme http://rishida.net/tools/conversion/ par exemple. Pour automatiser dans une application web, il y a des librairies standard dans la plupart des langages de programmation (PHP, Python, etc.).
adrien881 a écrit :
Oui tu peux les utiliser depuis début mai et même si ça te chante des caractères asiatiques

Attention à ne pas tout mélanger. Smiley cligne

- On peut utiliser des caractères non-ASCII dans les URL depuis belle lurette, avec le percent encoding que je décris plus haut.
- On peut aussi avoir des caractères non-ASCII dans les noms de domaine depuis pas mal de temps, avec le mécanisme Punycode. C'est ainsi que le domaine alsacréations.com, c'est-à-dire xn--alsacrations-geb.com en Punycode, a été enregistré (par pas Alsacréations).
- Ce même mécanisme est depuis peu utilisé pour des «extensions» de nom de domaine (TLD et ccTLD). C'est ça (et uniquement ça) la nouveauté de fin 2009/début 2010. Smiley smile

Un des problèmes des noms de domaine en Punycode c'est que les navigateurs ne les affichent pas tous avec les caractères «finaux», mais souvent affichent le nom de domaine en Punycode. Après un test rapide, les dernières versions de Firefox et Chrome affichent le Punycode, tandis que Safari 5 affiche les bons caractères. Pas testé Opera, les différentes versions d'IE...
Au temps pour moi,
Si je comprends bien la ligne de code
<a href="Éléphant">Éléphant</a>

Tromperait Smiley lol les anciens navigateurs.
Il vaut mieux écrire
<a href="%C3%89l%C3%A9phant">Éléphant</a>


sunseb sur quelle page de Wikipedia trouves-tu les liens avec des hrefs accentués? Car sur la page
http://fr.wikipedia.org/wiki/Éléphant je trouve dans le code source
<a href="/wiki/%C3%89l%C3%A9phant_d%27Asie" title="Éléphant d'Asie">éléphant d'Asie</a>
Florent V. a écrit :
Un des problèmes des noms de domaine en Punycode c'est que les navigateurs ne les affichent pas tous avec les caractères «finaux», mais souvent affichent le nom de domaine en Punycode. Après un test rapide, les dernières versions de Firefox et Chrome affichent le Punycode, tandis que Safari 5 affiche les bons caractères. Pas testé Opera, les différentes versions d'IE...

Opera 10.6 affiche les bons caractères. Il en est de même pour IE 8. En revanche, avec IE 6, autant oublier.