Codificación porcentual


La codificación porcentual , también conocida como codificación de URL , es un método para codificar datos arbitrarios en un Identificador uniforme de recursos (URI) utilizando solo los caracteres limitados de US-ASCII legales dentro de un URI. Aunque se conoce como codificación de URL, también se usa de manera más general dentro del conjunto principal de Identificador uniforme de recursos (URI), que incluye tanto el Localizador uniforme de recursos (URL) como el Nombre uniforme de recursos (URN). Como tal, también se usa en la preparación de datos del application/x-www-form-urlencoded tipo de medio , como se usa a menudo en el envío de datos de formularios HTML en solicitudes HTTP .

Los caracteres permitidos en un URI son o bien reservados o sin reservas (o un carácter de porcentaje como parte de un código porciento). Los caracteres reservados son aquellos que a veces tienen un significado especial. Por ejemplo, los caracteres de barra diagonal se utilizan para separar diferentes partes de una URL (o más generalmente, una URI). Los caracteres no reservados no tienen tales significados. Mediante codificación porcentual, los caracteres reservados se representan mediante secuencias de caracteres especiales. Los conjuntos de caracteres reservados y no reservados y las circunstancias bajo las cuales ciertos caracteres reservados tienen un significado especial han cambiado ligeramente con cada revisión de las especificaciones que gobiernan los URI y los esquemas de URI.

Cuando un carácter del conjunto reservado (un "carácter reservado") tiene un significado especial (un "propósito reservado") en un contexto determinado, y un esquema de URI dice que es necesario usar ese carácter para algún otro propósito, entonces el el carácter debe estar codificado en porcentaje . La codificación porcentual de un carácter reservado implica convertir el carácter a su valor de byte correspondiente en ASCII y luego representar ese valor como un par de dígitos hexadecimales . Los dígitos, precedidos por un signo de porcentaje ( %) que se utiliza como carácter de escape , se utilizan en el URI en lugar del carácter reservado. (Para un carácter no ASCII, normalmente se convierte a su secuencia de bytes enUTF-8 , y luego cada valor de byte se representa como se muestra arriba).

El carácter reservado /, por ejemplo, si se utiliza en el componente "ruta" de un URI , tiene el significado especial de ser un delimitador entre segmentos de ruta. Si, de acuerdo con un esquema de URI dado, /necesita estar en un segmento de ruta, entonces los tres caracteres %2Fo %2fdeben usarse en el segmento en lugar de sin formato /.

Los caracteres reservados que no tienen un propósito reservado en un contexto particular también pueden estar codificados por porcentaje, pero no son semánticamente diferentes de los que no lo son.

En el componente de " consulta " de un URI (la parte después de un carácter?), Por ejemplo, /todavía se considera un carácter reservado pero normalmente no tiene un propósito reservado, a menos que un esquema de URI en particular indique lo contrario. El carácter no necesita estar codificado en porcentaje cuando no tiene un propósito reservado.