Pregunta

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

Pero, ¿cómo se distingue Unicode cuando se decodifica? ¿Cómo sabes que % 41% 61 es \ u4161 frente a \ x41 \ x61 (" Aa ")?

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

O, ¿es el punto en el que se supone que los caracteres Unicode se pierden / dividen?

¿Fue útil?

Solución

Según Wikipedia :

  

Estándar actual

     

La sintaxis URI genérica ordena que los nuevos esquemas URI   que prevén la representación de   los datos de caracteres en un URI deben, en   efecto, representar personajes de la   conjunto sin reserva sin traducción,   y deberia convertir todos los demas   caracteres a bytes de acuerdo a   UTF-8, y luego codificar en porcentaje aquellos   valores. Este requisito era   introducido en enero de 2005 con la   Publicación de RFC 3986. Esquemas URI.   introducido antes de esta fecha no son   afectados.

     

No abordado por el actual   especificación es qué hacer con   Datos de caracteres codificados. Por ejemplo,   En computadoras, manifiestos de datos de personajes   en forma codificada, en algún nivel, y   por lo tanto podría ser tratado como binario   datos o como datos de caracteres cuando se está   mapeado a caracteres URI. Presumiblemente,   es hasta el esquema de URI   especificaciones para tener en cuenta esto   posibilidad y requiere una o la   otro, pero en la práctica, pocos, si acaso,   en realidad hacer.

     

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 está especificado por ningún RFC y tiene   Ha sido rechazado por el W3C. El tercero   La edición de ECMA-262 todavía incluye una   Función de escape (cadena) que utiliza este   sintaxis, pero también un encodeURI (uri)   Función que convierte a UTF-8 y   codifica en porcentaje cada octeto.

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

Otros consejos

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

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

Desde que se introdujeron los URI antes de que existiera Unicode, o por lo menos en un uso amplio, me imagino que esta es una pregunta muy específica de implementación. UTF-8 codifica su texto, y luego se escapa de los sonidos normales como la mejor idea, ya que es completamente compatible con cualquier sistema ASCII / ANSI, aunque puede que tenga uno o dos caracteres extraños.

En el otro extremo, para decodificar, deberías salir del texto y obtener una cadena UTF-8. Si alguien que usa un sistema anterior intenta enviar la suya algunos datos en ASCII / ANSI, no se hace ningún daño, ya está (casi) codificado en UTF-8.

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