Dans quel jeu de caractères devrais-je supposer que les caractères codés d'une URL sont?

StackOverflow https://stackoverflow.com/questions/140549

  •  02-07-2019
  •  | 
  •  

Question

RFC 1738 spécifie la syntaxe des URL, et mentionne que

  

Les URL sont écrites uniquement avec le graphique.   caractères imprimables du
  Jeu de caractères codés US-ASCII. le   les octets 80-FF hexadécimaux ne sont pas
  utilisé en US-ASCII, et les octets 00-1F   et 7F hexadécimal représentent
  caractères de contrôle; ceux-ci doivent être   codé.

Cependant, le code définissant ces octets n'est pas précisé.

RFC 2396 semble tenter d'améliorer la situation, mais:

  

Pour les séquences de caractères originales qui   contiennent des caractères non-ASCII, cependant, la situation est plus   difficile. Protocoles Internet qui transmettent des séquences d’octets destinées à   représenter des séquences de caractères devraient fournir un moyen de   identifiant le jeu de caractères utilisé, s'il peut y avoir plus d'un   [RFC2277]. Cependant, il n’existe actuellement aucune disposition dans le   syntaxe d'URI générique pour accomplir cette identification. Un URI individuel   schéma peut nécessiter un seul jeu de caractères, définir un jeu de caractères par défaut ou   fournir un moyen d'indiquer le jeu de caractères utilisé.

     

On s’attend à ce qu’un traitement systématique du codage des caractères au sein de l’URI soit   développé comme une modification future de cette spécification.

Existe-t-il un moyen sans équivoque permettant à un client de déterminer dans quel jeu de caractères interpréter les octets codés, ou dans lequel un serveur peut déterminer le type de client utilisé pour coder?

Il me semble que la plupart des serveurs utilisent UTF-8 par défaut, mais cela semble être un choix de facto plutôt qu'un choix spécifié.

Était-ce utile?

La solution

Selon votre devis, les URL sont en ASCII. C'est tout.

Les URI OTOH, autorisent de plus grands jeux de caractères; généralement UTF-8 comme vous l'avez dit vous-même.

Le point à retenir est que les URL sont un sous-ensemble d’URI. La vraie question est donc de savoir lequel de ces éléments est ce que vous écrivez dans un navigateur.

Je suppose que vous pouvez écrire un URI et le navigateur doit faire de son mieux pour le transformer en une URL (prise en charge par HTTP / 1.1, AFAICR). Pour les caractères non-ASCII, cela signifie des codes hexadécimaux, codant généralement UTF-8.

Autres conseils

Je pense que la spécification que vous recherchez est la la RFC 3987 , qui décrit les IRI - Internationalized Identifiants de ressources.

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