📄 urlunesc.c
字号:
#include <u.h>#include <libc.h>#include <bin.h>#include <httpd.h>/* go from url with escaped utf to utf */char *hurlunesc(HConnect *cc, char *s){ char *t, *v, *u; Rune r; int c, n; /* unescape */ u = halloc(cc, strlen(s)+1); for(t = u; c = *s; s++){ if(c == '%'){ n = s[1]; if(n >= '0' && n <= '9') n = n - '0'; else if(n >= 'A' && n <= 'F') n = n - 'A' + 10; else if(n >= 'a' && n <= 'f') n = n - 'a' + 10; else break; r = n; n = s[2]; if(n >= '0' && n <= '9') n = n - '0'; else if(n >= 'A' && n <= 'F') n = n - 'A' + 10; else if(n >= 'a' && n <= 'f') n = n - 'a' + 10; else break; s += 2; c = (r<<4)+n; } *t++ = c; } *t = '\0'; /* convert to valid utf */ v = halloc(cc, UTFmax*strlen(u) + 1); s = u; t = v; while(*s){ /* in decoding error, assume latin1 */ if((n=chartorune(&r, s)) == 1 && r == Runeerror) r = (uchar)*s; s += n; t += runetochar(t, &r); } *t = '\0'; return v;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -