In quale set di caratteri dovrei assumere i caratteri codificati in un URL?
-
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.
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.