O conjunto de caracteres que eu deveria assumir os caracteres codificados em um URL para a?

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

  •  02-07-2019
  •  | 
  •  

Pergunta

RFC 1738 especifica a sintaxe para URL, e menciona que

URLs são escritos apenas com o gráfico caracteres imprimíveis do
US-ASCII codificados conjunto de caracteres. o octetos 80-FF hexadecimal não são
usado em US-ASCII, e os octetos 00-1F e 7F hexadecimal representam
caracteres de controlo; estes devem ser codificado.

Não, no entanto, dizem que o código definir essas octetos, então, representar.

RFC 2396 parece para tentar melhorar a situação, mas:

Para sequências de caracteres originais que conter caracteres não-ASCII, porém, a situação é mais difícil. protocolos da Internet que as sequências de transmissão octeto destinados a representam sequências de caracteres são esperados para fornecer alguma forma de identificar a codificação usada, se pode haver mais do que uma [RFC2277]. No entanto, não há atualmente nenhuma provisão dentro do genéricos URI sintaxe para realizar essa identificação. Um URI indivíduo esquema pode exigir um único charset, definir um conjunto de caracteres padrão, ou fornecer uma maneira para indicar a codificação usada.

Espera-se que um tratamento sistemático da codificação de caracteres dentro URI será desenvolvido como uma futura alteração da presente especificação.

Existe alguma maneira sem ambiguidades em que um cliente pode determinar em qual conjunto de caracteres para interpretar octetos codificados, ou em que um servidor pode determinar o que um cliente usado para codificar com?

Parece-me que a maioria dos servidores padrão para UTF-8, mas esta parece ser uma escolha de facto mais do que um especificado.

Foi útil?

Solução

De acordo com a sua cotação, URLs são ASCII. Isso é tudo.

URIs OTOH, permitem charsets maiores; geralmente UTF-8 como você mesmo disse.

O ponto a lembrar é que URLs são um subconjunto de URIs. Portanto, a verdadeira questão é, qual destes é o que você escreve em um navegador?

Eu acho que você pode escrever um URI, e o navegador deve tentar o seu melhor para transformar a um URL (que é o HTTP / suporte 1.1, AFAICR). Para caracteres não-ASCII, o que significa hexcodes, geralmente de codificação UTF-8.

Outras dicas

Eu acredito que a especificação que você está procurando é RFC 3987 , que descreve Íris - internacionalizados Resource Identifiers.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top