¿En qué conjunto de caracteres debo suponer que están los caracteres codificados en una URL?

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

  •  02-07-2019
  •  | 
  •  

Pregunta

RFC 1738 especifica la sintaxis de las URL y menciona que

  

Las URL se escriben solo con el gráfico   personajes imprimibles de la
  Conjunto de caracteres codificados US-ASCII. los   los octetos 80-FF hexadecimales no son
  utilizado en US-ASCII y los octetos 00-1F   y 7F hexadecimal representan
  personajes de control; estos deben ser   codificado.

Sin embargo, no dice qué conjunto de códigos representan estos octetos que luego representan.

RFC 2396 parece intentar mejorar la situación, pero:

  

Para secuencias de caracteres originales que   contienen caracteres no ASCII, sin embargo, la situación es más   difícil. Protocolos de Internet que transmiten secuencias de octetos destinados a   representar secuencias de caracteres se espera que proporcionen alguna forma de   identificar el juego de caracteres utilizado, si puede haber más de uno   [RFC2277]. Sin embargo, actualmente no hay ninguna disposición dentro del   sintaxis genérica de URI para lograr esta identificación. Un URI individual   el esquema puede requerir un solo conjunto de caracteres, definir un conjunto de caracteres predeterminado o   proporcionar una forma de indicar el juego de caracteres utilizado.

     

Se espera que un tratamiento sistemático de la codificación de caracteres dentro de URI sea   desarrollado como una futura modificación de esta especificación.

¿Hay alguna forma inequívoca en la que un cliente puede determinar en qué conjunto de caracteres interpretar los octetos codificados, o en el que un servidor puede determinar con qué codificó un cliente?

Me parece que la mayoría de los servidores usan UTF-8 de manera predeterminada, pero esta parece ser una opción de facto más que una especificada.

¿Fue útil?

Solución

Según su presupuesto, las URL son ASCII. Eso es todo.

URIs OTOH, permiten charsets más grandes; generalmente UTF-8 como usted mismo dijo.

El punto a recordar es que las URL son un subconjunto de URI. Por lo tanto, la verdadera pregunta es, ¿cuál de estos es lo que escribe en un navegador?

Supongo que puede escribir un URI, y el navegador debe hacer todo lo posible para transformarse en una URL (que es lo que admite HTTP / 1.1, AFAICR). Para los caracteres que no son ASCII, eso significa códigos hexadecimales, que generalmente codifican UTF-8.

Otros consejos

Creo que la especificación que está buscando es RFC 3987 , que describe IRIs - Internacionalizados Identificadores de recursos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top