📄 codes_convert.c
字号:
#include "codes_convert.h"extern int errno;char urls[] = "0123456789ABCDEF";int geturlspos(char ch){ int i; for(i=0; i<strlen(urls); i++) { if (urls[i] == ch) return i; } return 0;}/* normal to url *//* ascii no deal, ' ' to '+', others to %XY, X is high, Y is lower */int urlencode(char *ib, int il, char *ob){ int i=0; int j=0; for(i=0; i<il; i++, j++) { if (!isascii(ib[i])) { ob[j++] = '%'; ob[j++] = urls[(ib[i] >> 4) & 0x0f]; ob[j] = urls[ib[i] & 0x0f]; } else { ob[j] = ib[i]; } } ob[j] = '\0'; return j;}/* url to normal *//* ascii no deal, '+' to ' ', others to normal, %XY->X is high, Y is lower */int urldecode(char *ib, int il, char *ob){ int i=0; int j=0; for(i=0; i<il; i++) { if (ib[i] == '%') { ob[j] = ((geturlspos(ib[i+1]) << 4) & 0xf0) | (geturlspos(ib[i+2]) & 0x0f); i += 2; } else { ob[j] = ib[i]; } j++; } return j;}/* code convert *//* fc: from chatset, tc: to chatset *//* ib: inbuf, il: inlen, ob: outbuf, ol: outlen */int code_convert(char *fc, char *tc, char *ib, int il, char *ob, int ol){ iconv_t cd; /* iconv_t iconv_open(const char *tocode, const char *fromcode); */ cd = iconv_open(tc, fc); if (cd == (iconv_t)-1) { printf("sys alm: call function iconv_open error, errno[%d]\n", errno); return -1; } /* size_t iconv(iconv_t cd, char **inbuf, size_t *inbytesleft, char **outbuf, size_t *outbytesleft); */ if (iconv(cd, (char**)&ib, (size_t*)&il, (char**)&ob,(size_t*)&ol) == (size_t)-1) { printf("sys alm: call function iconv error, errno[%d]\n", errno); return -1; } /* int iconv_close(iconv_t cd); */ iconv_close(cd); return ol;}/* gb2312 to utf8 */int gb2312_to_utf8(char *ib, int il, char *ob, int ol){ return code_convert("GB2312", "UTF-8", ib, il, ob, ol);}/* utf8 to gb2312 */int utf8_to_gb2312(char *ib, int il, char *ob, int ol){ return code_convert("UTF-8", "GB2312", ib, il, ob, ol);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -