Codificación por porcentaje de parámetros
Partes de la X API, en particular las que tratan con firmas OAuth, requieren que las cadenas estén codificadas de acuerdo con la RFC 3986, Sección 2.1. Dado que muchas implementaciones de algoritmos de codificación de URL no son totalmente compatibles con RFC 3986, las codificaciones incorrectas son la causa de muchos errores de firma OAuth. Por esta razón, el algoritmo exacto de firma a usar se cubre en esta página. Esta página cubre el proceso de codificación de URL descrito en RFC 3986, Sección 2.1. Te animamos a consultar esa especificación en caso de cualquier ambigüedad o conflicto con este documento.Codificación de una cadena
El siguiente algoritmo asume que estás codificando una cadena SRC copiando sus valores byte a byte a una cadena DST. Paso 1: Mientras SRC contenga bytes no leídos, lee el siguiente byte (8 bits) de SRC. Normalmente, esto se considera un carácter, pero en el caso de codificaciones donde un carácter puede ser más de un byte (como UTF-8), simplemente lee el primer byte. Paso 2: Comprueba si el byte leído coincide con alguno de los siguientes equivalentes ASCII. La siguiente tabla se ha dividido en filas para mayor legibilidad, pero solo necesitas determinar si el byte leído existe en la tabla en absoluto, no la fila específica.| Nombre | Caracteres ASCII | Valores de byte equivalentes |
|---|---|---|
| Dígitos | ’0’, ‘1’, ‘2’, ‘3’, ‘4’, ‘5’, ‘6’, ‘7’, ‘8’, ‘9’ | 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39 |
| Letras mayúsculas | ’A’, ‘B’, ‘C’, ‘D’, ‘E’, ‘F’, ‘G’, ‘H’, ‘I’, ‘J’, ‘K’, ‘L’, ‘M’, ‘N’, ‘O’, ‘P’, ‘Q’, ‘R’, ‘S’, ‘T’, ‘U’, ‘V’, ‘W’, ‘X’, ‘Y’, ‘Z’ | 0x41, 0x42, 0x43, 0x44, 0x45,0x46, 0x47, 0x48, 0x49, 0x4A, 0x4B,0x4C, 0x4D, 0x4E, 0x4F, 0x50, 0x51,0x52, 0x53, 0x54, 0x55, 0x56, 0x57,0x58, 0x59, 0x5A |
| Letras minúsculas | ’a’, ‘b’, ‘c’, ‘d’, ‘e’, ‘f’, ‘g’, ‘h’, ‘i’, ‘j’, ‘k’, ‘l’, ‘m’, ‘n’, ‘o’, ‘p’, ‘q’, ‘r’, ‘s’, ‘t’, ‘u’, ‘v’, ‘w’, ‘x’, ‘y’, ‘z’ | 0x61, 0x62, 0x63, 0x64, 0x65,0x66, 0x67, 0x68, 0x69, 0x6A, 0x6B,0x6C, 0x6D, 0x6E, 0x6F, 0x70, 0x71,0x72, 0x73, 0x74, 0x75, 0x76, 0x77,0x78, 0x79, 0x7A |
| Caracteres reservados | ’-’, ’.’, ’_’, ’~‘ | 0x2D, 0x2E, 0x5F, 0x7E |
Ejemplos
Los siguientes ejemplos pueden ser útiles para comparar con la salida de tu propio código. Debes considerar cualquier diferencia como un error. Los espacios codificados como caracteres ”+” son un ejemplo de codificación incorrecta.| Cadena original | Cadena codificada |
|---|---|
| Ladies + Gentlemen | Ladies%20%2B%20Gentlemen |
| An encoded string! | An%20encoded%20string%21 |
| Dogs, Cats & Mice | Dogs%2C%20Cats%20%26%20Mice |
| ☃ | %E2%98%83 |