2008-10-01 34 views
6

El método habitual de codificación URL de un carácter unicode es dividirlo en códigos HH al 2%. (\ u4161 =>% 41% 61)Decodificación de URL Unicode

Pero, ¿cómo es Unicode distingue al decodificar? ¿Cómo sabes que % 41% 61 es \ u4161 contra \ x41 \ x61 ("Aa")?

Son caracteres de 8 bits, que requieren codificación, precedidos por % 00?

¿O es que los caracteres Unicode se deben perder o dividir?

Respuesta

7

Según Wikipedia:

Los genéricos mandatos de sintaxis URI estándar actuales que los nuevos esquemas URI que prevén la representación de datos de caracteres en un URI debe, en efecto, representar personajes desde el conjunto sin reserva, y debe convertir todos los demás caracteres en bytes de acuerdo con UTF-8, y luego codificar por ciento valores. Este requisito fue introducido en enero de 2005 con la publicación de RFC 3986. Los esquemas de URI presentados antes de esta fecha no están afectados por .

No se trata de la especificación actual qué hacer con los datos de caracteres codificados . Por ejemplo, en computadoras, los datos de caracteres manifiestan en forma codificada, en algún nivel, y , por lo tanto, podrían tratarse como datos binarios o como datos de caracteres al asignados a caracteres URI. Presumiblemente, depende de las especificaciones del esquema URI para tener en cuenta esta posibilidad y requerir una o la otra, pero en la práctica, pocos, si alguno, realmente lo hacen.

implementaciones no estándar

Existe una codificación no estándar para caracteres Unicode:% uxxxx, donde xxxx es un valor Unicode representado como cuatro dígitos hexadecimales. Este comportamiento no lo especifica ningún RFC y el W3C ha rechazado . La tercera edición de ECMA-262 todavía incluye una función de escape (string) que utiliza esta sintaxis , sino también un encodeURI (URI) función que convierte a UTF-8 y ciento-codifica cada octeto.

Por lo tanto, parece que depende totalmente de la persona que escribe el método de unencode ... ¿No son los estándares divertidos?

0

Lo que siempre he hecho es que primero UTF-8 codifica una cadena Unicode para convertirla en una serie de caracteres de 8 bits antes de escapar de aquellos con% HH.

P.S. - Solo puedo esperar que las implementaciones no estándar (% uxxxx) sean pocas y distantes.

0

Dado que los URI se introdujeron antes de que existiera el Unicode, o al menos en el uso general, me imagino que esta es una pregunta muy específica de la implementación. UTF-8 codifica su texto, y luego escapando de ese modo suena como la mejor idea, ya que es completamente compatible con cualquier sistema ASCII/ANSI en su lugar, aunque puede obtener uno o dos caracteres extraños.

En el otro extremo, para decodificar, debería volver a abrir el texto y obtener una cadena UTF-8. Si alguien que usa un sistema anterior intenta enviar algunos datos en ASCII/ANSI, no hay daños, eso ya está (casi) codificado en UTF-8.

+0

Esto es exactamente lo que se debe utilizar. Los personajes que mencionas pueden parecer extraños, pero ninguno de ellos serán personajes de control (así es como funciona el UTF-8) y esto es realmente bueno. –

Cuestiones relacionadas