Caractères Unicode dans les URL

En 2010, diffuseriez-vous des URL contenant des caractères UTF-8 dans un grand portail Web?

Les caractères Unicode sont interdits conformément à 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 encodés dans le seul but d’avoir des URL attrayantes, donc le pourcentage d’encodage est désactivé.

Tous les principaux navigateurs semblent parsingr ces URL, peu importe ce que dit la RFC. Mon impression générale, cependant, est que cela devient très fragile lorsque vous quittez le domaine des navigateurs Web:

  • URL permettant de copier + coller dans des fichiers texte, des e-mails, même des sites Web avec un encodage différent
  • Bibliothèques de clients HTTP
  • Navigateurs exotiques, lecteurs RSS

Est-ce que mon impression est juste que des ennuis sont à prévoir ici, et donc ce n’est pas une solution pratique (encore) si vous êtes au service d’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 une façon magique de servir des URL de qualité 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é chez des clients plus âgés?

Utilisez le pourcentage d’encodage. Les navigateurs modernes prendront en charge les problèmes d’affichage et de collage et les rendront lisibles. Par exemple. http://ko.wikipedia.org/wiki/ 위키 백과: 대문

Edit: lorsque vous copiez une telle URL dans Firefox, le Presse-papiers contiendra le formulaire codé en pourcentage (ce qui est généralement une bonne chose), mais si vous ne copiez qu’une partie, il restra non codé.

Ce que Tgr a dit. Contexte:

 http://www.example.com/düsseldorf?neighbourhood=Lörick 

Ce n’est pas un URI. Mais c’est un IRI .

Vous ne pouvez pas inclure un IRI dans un document HTML4; le type d’atsortingbuts comme href est défini comme URI et non IRI. Certains navigateurs vont gérer 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 la requête, UTF-8-encodez-les puis encodez en pourcentage les octets non-ASCII:

 http://www.example.com/d%C3%BCsseldorf?neighbourhood=L%C3%B6rick 

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.

Maintenant vous avez un URI. C’est un URI laid. Mais la plupart des navigateurs le cacheront pour vous: copiez et collez-le dans la barre d’adresse ou suivez-le dans un lien et vous le verrez apparaître avec les caractères Unicode originaux. Wikipédia l’utilise depuis des années, par exemple:

 http://en.wikipedia.org/wiki/ɸ 

Le seul navigateur dont le comportement est imprévisible et ne montre pas toujours la jolie version de l’IRI est …

…bon tu sais.

Selon votre schéma d’URL, vous pouvez rendre la partie codée UTF-8 “non importante”. Par exemple, si vous examinez les URL de débordement de stack, elles ont la forme suivante:

  http://stackoverflow.com/questions/2742852/unicode-characters-in-urls 

Cependant, le serveur ne se soucie pas vraiment si vous obtenez la pièce après l’identifiant erroné, donc cela fonctionne aussi:

  http://stackoverflow.com/questions/2742852/ こ れ は 、 こ れ を 日本語 の テ 

Donc, si vous aviez une disposition comme celle-ci, vous pourriez potentiellement utiliser UTF-8 dans la pièce après l’identifiant et cela n’aurait pas vraiment d’importance si elle était brouillée. Bien sûr, cela ne fonctionne probablement que dans des circonstances assez spécialisées …

Je ne sais pas si c’est une bonne idée, mais comme mentionné dans d’autres commentaires et comme je l’interprète, de nombreux caractères Unicode sont valides dans les URL HTML5 .

Par exemple, href docs dit http://www.w3.org/TR/html5/links.html#attr-hyperlink-href :

L’atsortingbut href sur les éléments a et area doit avoir une valeur qui est une URL valide potentiellement entourée d’espaces.

Ensuite, la définition de “URL valide” pointe vers http://url.spec.whatwg.org/ , qui définit les points de code URL comme suit :

ASCII alphanumérique, “!”, “$”, “&”, “‘”, “(“, “)”, “*”, “+”, “,”, “-“, “.”, “/” , “:”, “;”, “=”, “?”, “@”, “_”, “~” et les points de code dans les plages U + 00A0 à U + D7FF, U + E000 à U + FDCF , U + FDF0 à U + FFFD, U + 10000 à U + 1FFFD, U + 20000 à U + 2FFFD, U + 30000 à U + 3FFFD, U + 40000 à U + 4FFFD, U + 50000 à U + 5FFFD, U +60000 à U + 6FFFD, U + 70000 à U + 7FFFD, U + 80000 à U + 8FFFD, U + 90000 à U + 9FFFD, U + A0000 à U + AFFFD, U + B0000 à U + BFFFD, U + C0000 à U + CFFFD, U + D0000 à U + DFFFD, U + E1000 à U + EFFFD, U + F0000 à U + FFFFD, U + 100000 à U + 10FFFD.

Le terme “points de code URL” est ensuite utilisé dans quelques parties de l’algorithme d’parsing, par exemple pour l’ état du chemin relatif :

Si c n’est pas un sharepoint code URL et non “%”, parsez l’erreur.

Aussi le validateur http://validator.w3.org/ passe pour les URL comme "你好" , et ne passe pas pour les URL avec des caractères comme les espaces "ab"

Comme tous ces commentaires sont vrais, vous devez noter que, dans la mesure où les caractères arabes (persans) et chinois approuvés par l’ ICANN sont enregistrés en tant que noms de domaine, toutes les entresockets de création de navigateurs (Microsoft, Mozilla, Apple, etc.) doivent prendre en charge Unicode dans les URL sans encodage, et ceux-ci doivent être consultables par Google, etc.

Donc, ce problème résoudra ASAP.

Utilisez un formulaire codé en pourcentage . Certains ordinateurs (principalement anciens) exécutant Windows XP, par exemple, ne prennent pas en charge Unicode, mais plutôt des codages 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 du papier à un utilisateur, contenant des caractères difficiles à taper, cet utilisateur peut avoir du mal à le taper (ou 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 supportent évidemment pas Internet).

Il existe toutefois un inconvénient, car les caractères encodés en pourcentage sont plus longs que les caractères originaux, ce qui peut entraîner de très longues URL. Mais essayez simplement de l’ignorer ou utilisez un raccourci d’URL (je recommanderais goo.gl dans ce cas, qui fait 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, la longueur étant de 14 caractères).

Pour moi c’est la bonne façon, ça vient de fonctionner:

  $linker = rawurldecode("$link"); < ?php echo $linker ;?> 

Cela a fonctionné, et maintenant les liens sont affichés correctement:

http://newspaper.annahar.com/article/121638 -معرض – جوزف-حرب-في-غاليري-جانين-ربيز-لوحاته-الجدية-تبحث-وتكتشف-وتفرض-الاحترام

Lien trouvé sur:

http://www.galeriejaninerubeiz.com/newsite/news