C - URL编码

ryy*_*yst 7 c urlencode libcurl

有一种简单的方法在C中进行URL编码吗?我正在使用libcurl,但我还没有找到方法.具体来说,我需要做百分之百逃脱.

ali*_*ian 11

在基于维基百科的C中,无需分配和免费.确保输出缓冲区至少为3X输入URL字符串.通常你只需要编码可能4K,因为URL往往很短,所以只需在堆栈上进行.

char rfc3986[256] = {0};
char html5[256] = {0};

void url_encoder_rfc_tables_init(){

    int i;

    for (i = 0; i < 256; i++){

        rfc3986[i] = isalnum( i) || i == '~' || i == '-' || i == '.' || i == '_' ? i : 0;
        html5[i] = isalnum( i) || i == '*' || i == '-' || i == '.' || i == '_' ? i : (i == ' ') ? '+' : 0;
    }
}

char *url_encode( char *table, unsigned char *s, char *enc){

    for (; *s; s++){

        if (table[*s]) sprintf( enc, "%c", table[*s]);
        else sprintf( enc, "%%%02X", *s);
        while (*++enc);
    }

    return( enc);
}
Run Code Online (Sandbox Code Playgroud)

像这样使用它

url_encoder_rfc_tables_init();

url_encode( html5, url, url_encoded);
Run Code Online (Sandbox Code Playgroud)


Oli*_*rth 7

curl_escape

显然已经被取代了

curl_easy_escape