En 2010, diffuseriez-vous des URL contenant des caractères UTF-8 dans un grand portail Web?
Les caractères Unicode sont interdits selon la RFC sur les URL (voir ici ). Ils devraient être codés en pourcentage pour être conformes aux normes.
Mon point principal, cependant, est de servir les caractères non codés dans le seul but d'avoir de belles URL, donc le codage en pourcentage est éliminé.
Tous les principaux navigateurs semblent analyser ces URL, peu importe ce que dit la RFC. Mon impression générale, cependant, est que cela devient très instable lorsque vous quittez le domaine des navigateurs Web:
- URL à copier-coller dans des fichiers texte, des courriels, même des sites Web avec un codage différent
- Bibliothèques clientes HTTP
- Navigateurs exotiques, lecteurs RSS
Mon impression est-elle correcte qu'il faut s'attendre à des problèmes ici, et donc ce n'est pas (encore) une solution pratique si vous servez un public non technique et qu'il est important que tous vos liens fonctionnent correctement même s'ils sont cités et transmis?
Existe-t-il un moyen magique de proposer de jolies URL en HTML?
http://www.example.com/düsseldorf?neighbourhood=Lörick
qui peut être copié + collé avec les caractères spéciaux intacts, mais fonctionne correctement lorsqu'il est réutilisé dans des clients plus anciens?
Réponses:
Utilisez le codage en pourcentage. Les navigateurs modernes prendront en charge les problèmes d'affichage et de collage et le rendront lisible par l'homme. Par exemple. http://ko.wikipedia.org/wiki/ 위키 백과: 대문
Edit: lorsque vous copiez une telle URL dans Firefox, le presse-papiers contiendra la forme codée en pourcentage (ce qui est généralement une bonne chose), mais si vous n'en copiez qu'une partie, elle restera non codée.
la source
GET /images/logo.png HTTP/1.1
? Encodent-ils toujours l'URL en pourcentage?Ce que Tgr a dit. Contexte:
Ce n'est pas un URI. Mais il est un IRI .
Vous ne pouvez pas inclure un IRI dans un document HTML4; le type d'attributs comme
href
est défini comme URI et non IRI. Certains navigateurs gèrent de toute façon un IRI ici, mais ce n'est pas vraiment une bonne idée.Pour encoder un IRI dans un URI, prenez le chemin et les parties de requête, encodez-les en UTF-8 puis encodez en pourcentage les octets non ASCII:
S'il y a des caractères non ASCII dans la partie nom d'hôte de l'IRI, par exemple.
http://例え.テスト/
, ils ont été encodés en utilisant Punycode à la place.Vous avez maintenant un URI. C'est un URI laid. Mais la plupart des navigateurs cacheront cela pour vous: copiez-le et collez-le dans la barre d'adresse ou suivez-le dans un lien et vous le verrez s'afficher avec les caractères Unicode d'origine. Wikipédia l'utilise depuis des années, par exemple:
Le seul navigateur dont le comportement est imprévisible et n'affiche pas toujours la jolie version IRI est ...
...bon tu sais.
la source
En fonction de votre schéma d'URL, vous pouvez rendre la partie encodée UTF-8 "non importante". Par exemple, si vous regardez les URL de Stack Overflow, elles se présentent sous la forme suivante:
Cependant, le serveur ne se soucie pas vraiment si vous obtenez la partie après l'identifiant incorrect, donc cela fonctionne également:
Donc, si vous aviez une mise en page comme celle-ci, vous pourriez potentiellement utiliser UTF-8 dans la partie après l'identifiant et cela n'aurait pas vraiment d'importance s'il était déformé. Bien sûr, cela ne fonctionne probablement que dans des circonstances quelque peu spécialisées ...
la source
Je ne sais pas si c'est une bonne idée, mais comme mentionné dans d'autres commentaires et tel que je l'interprète, de nombreux caractères Unicode sont valides dans les URL HTML5 .
Par exemple, les
href
documents disent http://www.w3.org/TR/html5/links.html#attr-hyperlink-href :Ensuite, la définition de «URL valide» pointe vers http://url.spec.whatwg.org/ , qui définit les points de code URL comme:
Le terme "points de code URL" est alors utilisé dans quelques parties de l'algorithme d'analyse, par exemple pour l' état du chemin relatif :
De plus, le validateur http://validator.w3.org/ passe pour les URL comme
"你好"
, et ne passe pas pour les URL avec des caractères comme des espaces"a b"
Connexes: quels caractères rendent une URL invalide?
la source
"你好"
et"a b"
) doivent être codées en pourcentage lors de la demande HTTP, n'est-ce pas?"a b"
je suis presque sûr que oui car l'espace n'est pas dans la liste autorisée ci-dessus. Car"你好"
c'est certainement la meilleure idée d'encoder en pourcentage, mais je ne sais pas si c'est juste une question de "les implémentations ne sont pas assez bonnes" ou si le "standard le dit". La norme HTML semble autoriser ces caractères. Mais je pense que cela est spécifié par la norme HTTP, pas par HTML. Voir aussi: stackoverflow.com/questions/912811/…Comme tous ces commentaires sont vrais, vous devez noter qu'en ce qui concerne les caractères arabes (persans) et chinois approuvés par l' ICANN pour être enregistrés comme nom de domaine, toutes les sociétés de création de navigateurs (Microsoft, Mozilla, Apple, etc.) doivent prend en charge Unicode dans les URL sans aucun encodage, et celles-ci devraient être consultables par Google, etc.
Donc, ce problème sera résolu dès que possible.
la source
Utilisez une forme codée en pourcentage . Certains ordinateurs (principalement anciens) exécutant Windows XP par exemple ne prennent pas en charge Unicode, mais plutôt des encodages ISO. C'est la raison pour laquelle les URL codées en pourcentage ont été inventées. De plus, si vous donnez une URL imprimée sur papier à un utilisateur, contenant des caractères qui ne peuvent pas être facilement saisis, cet utilisateur peut avoir du mal à le saisir (ou simplement l'ignorer). La forme codée en pourcentage peut même être utilisée dans la plupart des machines les plus anciennes qui aient jamais existé (bien qu'elles ne prennent pas en charge Internet bien sûr).
Il y a cependant un inconvénient, car les caractères codés en pourcentage sont plus longs que les caractères originaux, ce qui peut entraîner des URL très longues. Mais essayez simplement de l'ignorer ou utilisez un raccourcisseur d'URL (je recommanderais goo.gl dans ce cas, ce qui crée une URL de 13 caractères). De plus, si vous ne souhaitez pas vous inscrire à un compte Google, essayez bit.ly (bit.ly crée des URL légèrement plus longues, avec une longueur de 14 caractères).
la source
Pour moi, c'est la bonne façon, cela a juste fonctionné:
Cela a fonctionné, et maintenant les liens s'affichent correctement:
http://newspaper.annahar.com/article/121638 -معرض - جوزف-حرب-في-غاليري-جانين-ربيز-لوحاته-الجدية-تبحث-وتكتشف-وتفامض-الاحته
Lien trouvé sur:
http://www.galeriejaninerubeiz.com/newsite/news
la source