CGI - Convertir ascii recibido de parametros en caracter

 
Vista:

Convertir ascii recibido de parametros en caracter

Publicado por javier (1 intervención) el 14/04/2005 17:11:25
Tengo un formulario que recoge datos. El problema viene si por ejemplo escriben una cadena como la siguiente C+. El cgi al recuperar los datos me recupera C%2B (el + lo convierte en Ascii). Si quiero volver a escribir ese dato por pantalla, como puedo convertir el ascii en el caracter que realmente es??
Estoy programando el cgi en C

Un saludo y gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Convertir ASCII a caracter en C

Publicado por Alejandro (140 intervenciones) el 24/08/2023 19:48:10
Si estás trabajando con C y necesitas convertir caracteres ASCII en sus equivalentes en caracteres reales, puedes usar las funciones de manipulación de cadenas de caracteres que ofrece el lenguaje C. La biblioteca `string.h` contiene funciones útiles para estas operaciones. Aquí tienes cómo convertir `C%2B` de nuevo a `C+`:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include <stdio.h>
#include <string.h>
 
void decodeUrl(char* str) {
    char* pos = str;
    while (*str) {
        if (*str == '%' && *(str + 1) && *(str + 2)) {
            *pos = hextochar(*(str + 1), *(str + 2));
            str += 2;  // Avanzar dos posiciones después de procesar el escape
        } else if (*str == '+') {
            *pos = ' ';  // Convertir el + a espacio
        } else {
            *pos = *str;
        }
        str++;
        pos++;
    }
    *pos = '\0';  // Terminar la cadena
}
 
int main() {
    char input[] = "C%2B";
    decodeUrl(input);
    printf("Texto decodificado: %s\n", input);
    return 0;
}

La función `decodeUrl` toma una cadena y procesa cada carácter en busca de secuencias de escape `%xx`, donde `xx` son dos dígitos hexadecimales. La función `hextochar` convierte esos dos dígitos hexadecimales en el valor decimal correspondiente y reemplaza el escape con el carácter correspondiente. Además, reemplaza los signos '+' con espacios.

Recuerda que este es un ejemplo básico y puede ser necesario adaptarlo para tu caso específico en el contexto de tu programa CGI.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar