라이브러리를 설치 해서 쓰면 되지만 라이브러리 때문에 빌드가 안되거나 하는 상황이 많기 때문에 직접 구현 하는 방법으로 안내 할까 합니다.
일단 소스 부터 볼께요.
BYTE ConHex(const BYTE& uc){ return uc > 9 ? uc + 55 : uc + 48; } CString ConvertURLEncode(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 * 3); if (pOutBuf) { pInTmp = pInBuf; pOutTmp = pOutBuf; // do encoding while (*pInTmp) { if (isalnum(*pInTmp) || '-' == *pInTmp || '_' == *pInTmp || '.' == *pInTmp) *pOutTmp++ = *pInTmp; else { *pOutTmp++ = '%'; *pOutTmp++ = ConHex(*pInTmp >> 4); *pOutTmp++ = ConHex(*pInTmp % 16); } pInTmp++; } *pOutTmp = '\0'; sOut.ReleaseBuffer(); } sOrg.ReleaseBuffer(); return sOut; }
소스를 보시면 아시겠지만 URLEncode 는 숫자,영문,몇개의 특수문자 외의 문자열은 HEX 값으로 변환하여 전달하는 방법입니다.
물론 받는 쪽에서는 DeCode를 해서 풀어야 정상적인 문자열로 확인 할수 있습니다.
웹이랑 데이터를 주고 받기 위해서는 단순히 URLEncode 만 호출 해서 해결 할수 있지만 개발되는 프로그램 플랫폼 환경이 Ansi 환경이면 UTF8로 변환 한후 그것을 다시 URLEncode로 변환하여 전달 해야 정상적으로 웹에 전달이 됩니다.
아래 링크도 확인 하시기 바랍니다.
https://ansur.blogspot.com/2020/04/mfc-ansi-utf8.html
그럼 ^^
댓글 없음:
댓글 쓰기