Question

La méthode habituelle de codage d'URL d'un caractère unicode consiste à le scinder en 2% codes HH. ( \ u4161 = > % 41% 61 )

Mais comment distinguer l'unicode lors du décodage? Comment savoir que % 41% 61 est \ u4161 et \ x41 \ x61 ("Aa")?

Les caractères 8 bits nécessitant un codage sont-ils précédés de % 00 ?

Ou, est-ce que le point que les caractères Unicode sont supposés être perdus / divisés?

Était-ce utile?

La solution

Selon Wikipedia :

  

Norme actuelle

     

La syntaxe générique d’URI prescrit que les nouveaux schémas d’URI   qui prévoient la représentation de   les données de caractère dans un URI doivent   effet, représentent des personnages du   ensemble non réservé sans traduction,   et devrait convertir tous les autres   caractères en octets selon   UTF-8, puis encoder ceux-ci en pourcentage   valeurs. Cette exigence était   introduit en janvier 2005 avec le   publication de la RFC 3986. Schémas d'URI   introduits avant cette date ne sont pas   affecté.

     

Non traité par le courant   spécification est ce qu'il faut faire avec   données codées. Par exemple,   dans les ordinateurs, les manifestes de données de caractères   sous forme codée, à un certain niveau, et   donc pourrait être traité soit comme binaire   données ou en tant que données de caractères lors de   mappé sur des caractères URI. Probablement,   c'est au schéma d'URI   spécifications pour tenir compte de cette   possibilité et nécessite un ou la   autre, mais en pratique, peu, voire aucun,   fait réellement.

     

Implémentations non standard

     

Il existe un encodage non standard   pour les caractères Unicode:% uxxxx, où   xxxx est une valeur Unicode représentée par   quatre chiffres hexadécimaux. Ce comportement   n'est pas spécifié par une RFC et a   été rejetée par le W3C. Le troisième   L’édition de l’ECMA-262 inclut toujours un   fonction d'échappement (chaîne) qui utilise cette   syntaxe, mais aussi un encodeURI (uri)   fonction qui se transforme en UTF-8 et   pourcentage-code chaque octet.

Donc, il semble que cela incombe entièrement à la personne qui écrit la méthode de décodage ... Les normes ne sont-elles pas amusantes?

Autres conseils

Ce que j'ai toujours fait est tout d'abord de coder en UTF-8 une chaîne Unicode pour en faire une série de caractères 8 bits avant d'échapper à ceux avec% HH.

P.S. - J'espère seulement que les implémentations non standard (% uxxxx) sont rares.

Puisque les URI ont été introduits avant l’unicode, ou du moins qu’ils soient largement utilisés, j’imagine que c’est une question très spécifique à la mise en œuvre. Le codage UTF-8 de votre texte, puis son échappement normal semble être la meilleure idée, car il est totalement compatible avec tous les systèmes ASCII / ANSI en place, bien que vous puissiez obtenir un ou plusieurs caractères étranges.

À l’autre extrémité, pour décoder, vous détournez votre texte et obtenez une chaîne UTF-8. Si une personne utilisant un ancien système essaie de vous envoyer des données en ASCII / ANSI, vous ne risquez rien, c'est déjà (presque) encodé en UTF-8.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top