Written by 서광호 ([email protected]) | Hits: 40 , Lines: 210 |
Re: RE: [qDecoder] 버그인지는 모르겠지만…. |
---|
qURLencode가 아니라 qURLdecode 였어요. 죄송합니다.. 아무튼 문제가 있긴 해요.. 결과가 아래와 같이 나옵니다. query_string이 sss="%2000%" 일경우… sss = " 00? 이렇게 나오고요…… query_string이 sss=%22+00%25%22 이면 sss = " 00%" 이렇게 나옵니다.. 이 문제에 대해서 알수 있는 url 알려드리겠습니다.. http://www.blooberry.com/indexdot/html/topics/urlencoding.htm 그리고.. 제가 해결했긴 했는데 제대로 했는지 모르겠습니다.. /* Heximal 코드 이면 1 아니면 0을 리턴 */ int isHex(char c) { if((c >= ‘0’) && (c <= ‘9’)) return 1; else if((c >= ‘A’) && (c <= ‘Z’)) return 1; else if((c >= ‘a’) && (c <= ‘z’)) return 1; else return 0; } /********************************************** ** Usage : qURLdecode(Query Pointer); ** Return: Pointer of Query string ** Do : Decode query string **********************************************/ void qURLdecode(char *str){ int i, j; if(!str)return; for(i = j = 0; str[j]; i++, j++){ switch(str[j]){ case ‘+’:{ str[i] = ‘ ‘; break; } case ‘%’:{ if (!str[j+1]) break; /* ‘%’ 뒤에 오는 문자가 Heximal 인지 판단 */ if (!isHex(str[j+1])) { str[i] = str[j]; break; } str[i] = _x2c(str[j + 1], str[j + 2]); j += 2; break; } default:{ str[i] = str[j]; break; } } } str[i]=’ |