Hace el estándar de HTTP o algo definir la codificación que debe ser usado en caracteres especiales antes de que se codifican en la dirección url con %XXs? Si no define es allí una manera de definir la codificación que se utiliza? Parece que la mayoría de los navegadores de enviar los datos en utf-8.

InformationsquelleAutor JtR | 2009-10-10

3 Comentarios

  1. 26

    Hace el estándar de HTTP o algo definir la codificación que debe ser usado en caracteres especiales antes de que se codifican en la dirección url con %XXs?

    El estándar HTTP, no. Pero a otro nivel, IRI, pueden entrar en juego.

    URIs son explícitamente (una vez %decodificados) secuencias de bytes. ¿Qué caracteres Unicode esos bytes mapa en no es especificado por el URI estándar o el estándar de HTTP para http:-scheme URIs.

    Específicamente para los parámetros de consulta: navegadores web utilizará la codificación de origen, la página que realice el envío de un formulario OBTENER la URL, así que si usted tiene una página en ISO-8859-1 y pones » é » en un cuadro de búsqueda podrás conseguir ‘?search=%E9’, pero si haces lo mismo en una página codificado como UTF-8 obtendrás ‘?search=%C3%E9’. Si usted no atiende a la página de formulario con cualquier conjunto de caracteres, el navegador va a adivinar, que no quiere ya que va a hacer lo imposible adivinar lo que el formato de la presentación se va a venir como.

    Para las otras partes de una dirección URL en un navegador no genera por si mismo, pero si la oferta es con caracteres no ASCII en los enlaces que normalmente codifican como UTF-8. Este no es confiable, ya que depende del navegador y la configuración regional, por lo que es mejor no usar esta en el momento.

    La norma que si bien permite que los caracteres no ASCII en los enlaces es IRI. IRI convierte a URI por UTF-8%-codificación de la mayoría de la URL, pero el nombre de host se convierten con Punycode lugar. Para la compatibilidad es mejor no confiar en los navegadores de la comprensión de IRIs en los enlaces todavía. En su lugar, UTF-8-luego-%-codificar su ruta de acceso y el parámetro de caracteres a ti mismo. Seguirán apareciendo como el derecho de los caracteres en la barra de direcciones de los navegadores modernos; por desgracia, es decir, no mostrar el decodificado de carácter RII forma en todos los casos, dependiendo de la configuración de idioma.

    La Wiki IRI para la griega gamma personaje es:

    http://en.wikipedia.org/wiki/Γ
    

    Codificado en un URI, es:

    http://en.wikipedia.org/wiki/%CE%93
    
    • Cuando te diste cuenta de que el navegador envía datos en la codificación, que recibió el formulario? Mi firefox y chrome parece realmente funciona de esa manera, al cambiar el contenido del conjunto de caracteres de información.
    • Es sólo uno de los comportamientos que siempre ha seguido, desde principios de Netscape. De acuerdo a las especificaciones de la presentación de la codificación debe ser controlado por accept-charset y se comunicará al servidor en el formulario multipart-datos de la sub-encabezados, pero en la práctica IE se accept-charset peligrosamente equivocado y no hay ningún explorador envía el formulario de datos de sub-encabezados, así que nos quedamos con esta situación de confiar en el formulario de codificación. Oh, bueno, un día todo el mundo sólo el uso de UTF-8 y todo funcionará. Un siglo…
  2. 2

    Por RFC 2616,

       CHAR           = <any US-ASCII character (octets 0 - 127)>
    

    y

     token          = 1*<any CHAR except CTLs or separators>
    
       separators     = "(" | ")" | "<" | ">" | "@"
                      | "," | ";" | ":" | "\" | <">
                      | "/" | "[" | "]" | "?" | "="
                      | "{" | "}" | SP | HT
    

    y URIs son tokens, con diversas específicas de los separadores. Así que, en teoría, nada pero US-ASCII debería estar allí. (En la práctica, ya que el ISO-8859-1 extensión a US-ASCII se utiliza en muchos otros spots en el HTTP especificaciones, no es inusual encontrar HTTP implementaciones que de soporte ISO-8859-1 en lugar de sólo US-ASCII, pero estrictamente hablando que no es compatible con los estándares de HTTP).

  3. 1

    Hasta donde yo sé, no hay manera de definirlo, aunque yo siempre he asumido que es el ASCII, ya que es lo que es DNS (en la actualidad, aunque localizada DNS que viene, con todos los problemas que eso conlleva).

    Nota: UTF8 es «compatible con ASCII» a menos que usted intente utilizar caracteres extendidos. Esto probablemente juega un pequeño papel en el razonamiento detrás de por qué algunos navegadores pueden enviar sus OBTENER datos codificado en UTF8.

    EDICIÓN: a partir De tu comentario, parece que no sabe cómo el % de la codificación de las obras en todos, así que aquí va.

    Dada la siguiente cadena de la cadena de consulta, "?foo=Hello World!", el «Hola Mundo!» como parte de las necesidades de la codificación URL. La forma en que esto funciona es que cualquier ‘especial’ caracteres obtener su valor ASCII tomado y convertido a hexadecimal precedido por un '%'. Así que la cadena iba a convertir a "?foo=Hello%20World%21".

    • Me refería a los caracteres especiales en los parámetros de solicitud como en foo/página.php?nombre=%12%34foo.
    • Creo ISO-8859 también es compatible con ascii en caso de que usted no use nada que falta de ascii. Mi firefox, al menos, parece enviar iso-8859-1 como un defecto accept-charset parámetro en las solicitudes. Después de cambiar la codificación predeterminada en about:config todavía envía peticiones get en utf-8.
    • Accept-Charset sólo afecta a la devolución de las páginas de codificación, no por sí mismo la solicitud de la. Y yo estaba refiriendo a todos los personajes dentro de la consulta, no solo el nombre de host, o alguna otra parte.
    • ¿Cómo llegaste a la conclusión de que no sé cómo escape URI funciona?

Dejar respuesta

Please enter your comment!
Please enter your name here