URLEncode 하는 방법은 아래 링크로 확인하세요.
물론 웹에서 넘겨온 데이터가 URLEncode로 처리가 되어진 문자열 이어야 합니다.
일단 소스부터 볼께요.
BYTE ConByte(const BYTE& uc) { return uc > 57 ? uc - 55 : uc - 48; } CString ConvertURLDecode(CString sOrg) { CString sOut; const int nLen = sOrg.GetLength() + 1; register LPBYTE pOutTmp = NULL; LPBYTE pOutBuf = NULL; register LPBYTE pInTmp = NULL; LPBYTE pInBuf = (LPBYTE)sOrg.GetBuffer(nLen); //alloc out buffer pOutBuf = (LPBYTE)sOut.GetBuffer(nLen); if (pOutBuf) { pInTmp = pInBuf; pOutTmp = pOutBuf; // do encoding while (*pInTmp) { if ('%' == *pInTmp) { pInTmp++; *pOutTmp++ = (ConByte(*pInTmp) % 16 << 4) + ConByte(*(pInTmp + 1)) % 16; pInTmp++; } else *pOutTmp++ = *pInTmp; pInTmp++; } *pOutTmp = '\0'; sOut.ReleaseBuffer(); } sOrg.ReleaseBuffer(); return sOut; }
소스를 보시면 아시겠지만 URLDecode는 헥사로 변환된 문자열을 다시 바이트 문자열로 변환하는 코드 입니다.
웹에서 넘겨진 데이터가 URLEncode로 변환 되어졌을경우 만든는 프로그램 환경이 UTF-8 환경이면 Decode 코드로만 처리가 되지만 Ansi 환경일 경우에는 UTF8 을 Ansi 로 바꾸는것을 Decode 하고 난후 처리 해야 한글 같은것을 정상적으로 처리 하실수 있습니다.
아래 링크도 필요하시면 확인 하시기 바랍니다.
그럼 ^^
댓글 없음:
댓글 쓰기