2008-09-26 8 views
24

RFC 1738 especifica la sintaxis para el URL de, y menciona que¿Qué juego de caracteres debería asumir los caracteres codificados en una URL para estar?

URLs se escriben sólo con los gráficos caracteres imprimibles de la
US-ASCII juego de caracteres codificados. Los octetos 80-FF hexadecimales no son
utilizados en US-ASCII, y los octetos 00-1F y 7F hexadecimales representan
caracteres de control; estos deben estar codificados en .

No obstante, decir qué código establecen estos octetos representan a continuación.

RFC 2396 parece tratar de mejorar la situación, pero:

Para secuencias de caracteres originales que contener caracteres no ASCII, sin embargo, la situación es más difícil . Los protocolos de Internet que transmiten secuencias de octetos destinados a representan secuencias de caracteres que se espera que proporcionen alguna forma de identificando el conjunto de caracteres utilizado, si puede haber más de un [RFC2277]. Sin embargo, actualmente no hay ninguna disposición dentro de la sintaxis URI genérica para lograr esta identificación. Un esquema individual de URI puede requerir un juego de caracteres único, definir un juego de caracteres predeterminado o para 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.

¿Existe alguna manera no ambigua de que un cliente pueda determinar en qué conjunto de caracteres interpretar los octetos codificados, o en los que un servidor puede determinar con qué lo codificó un cliente?

Me parece que la mayoría de los servidores tienen por defecto UTF-8, pero esta parece ser una opción de hecho más que una especificada.

Respuesta

11

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

URIs OTOH, permiten conjuntos más grandes; usualmente UTF-8 como dijiste a ti mismo.

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 debería intentarlo, es mejor transformarlo en una URL (que es lo que HTTP/1.1 admite, AFAICR). para caracteres que no son ASCII, que significa códigos hexadecimales, que generalmente codifica UTF-8.

+1

Las URL son identificadores opacos que no tienen codificación de caracteres, el identificador opaco se puede considerar una cadena binaria de caracteres que solo tiene un significado para el host de destino al que están destinados. El host de destino puede, si lo desea, aplicar una interpretación de conjunto de caracteres de los datos de URL. Esto significa que el cliente no tiene control sobre el significado o conjunto de caracteres y no hay manera de expresar una elección, ya que la interpretación de la URL es 100% una cuestión para el servidor.Por lo tanto, para responder a la pregunta original no se puede asumir ningún conjunto de caracteres, es específico de la implementación del servidor, así que pregúntele al administrador del servidor. –

4

Creo que la especificación que está buscando es RFC 3987, que describe los IRI - Identificadores de recursos internacionalizados.

Cuestiones relacionadas