In quale set di caratteri dovrei assumere i caratteri codificati in un URL?

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

  •  02-07-2019
  •  | 
  •  

Domanda

RFC 1738 specifica la sintassi per gli URL e menziona

  

Gli URL sono scritti solo con l'immagine   personaggi stampabili della
  Set di caratteri codificati US-ASCII. Il   gli ottetti 80-FF esadecimali non sono
  usato in US-ASCII e gli ottetti 00-1F   e 7F esadecimali rappresentano
  personaggi di controllo; questi devono essere   codificati.

Tuttavia, non dice quale codice impostare questi ottetti rappresentano quindi

RFC 2396 sembra cercare di migliorare la situazione, ma:

  

Per le sequenze di caratteri originali che   contengono caratteri non ASCII, tuttavia la situazione è maggiore   difficile. Protocolli Internet che trasmettono sequenze di ottetti previsti   rappresentare sequenze di caratteri che dovrebbero fornire un modo per   identificare il set di caratteri utilizzato, se potrebbe essercene più di uno   [RFC2277]. Tuttavia, al momento non esiste alcuna disposizione all'interno di   sintassi URI generica per realizzare questa identificazione. Un URI individuale   lo schema può richiedere un singolo set di caratteri, definire un set di caratteri predefinito o   fornire un modo per indicare il set di caratteri utilizzato.

     

È previsto un trattamento sistematico della codifica dei caratteri all'interno dell'URI   sviluppato come una futura modifica di questa specifica.

Esiste un modo inequivocabile in cui un client può determinare in quale set di caratteri interpretare gli ottetti codificati o in cui un server può determinare con cosa un client utilizzato per codificare?

Mi sembra che la maggior parte dei server predefiniti UTF-8, ma questa sembra essere una scelta di fatto più di una specificata.

È stato utile?

Soluzione

Come da preventivo, gli URL sono ASCII. Questo è tutto.

URI OTOH, consentono set di caratteri più grandi; di solito UTF-8 come hai detto tu.

Il punto da ricordare è che gli URL sono un sottoinsieme di URI. Pertanto, la vera domanda è: quale di questi è ciò che scrivi in ??un browser?

Immagino che tu possa scrivere un URI e il browser dovrebbe fare del suo meglio per trasformarsi in un URL (che è ciò che supporta HTTP / 1.1, AFAICR). Per i caratteri non ASCII, ciò significa codici esadecimali, in genere codifica UTF-8.

Altri suggerimenti

Credo che la specifica che stai cercando sia RFC 3987 , che descrive gli IRI - Internazionalizzati Identificatori di risorse.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top