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)