C++ URL 인코딩 (== 퍼센트 인코딩)
소스 코드는 아래와 같습니다.
참고 자료
[1] 소스코드 참고: http://codepad.org/lCypTglt
[2] 위 소스코드를 발견한 곳: http://www.zedwood.com/article/cpp-urlencode-function
[3] 퍼센트 인코딩에 대한 정보: http://ko.wikipedia.org/wiki/퍼센트_인코딩
/**
* 주어진 문자열을 URL 인코딩하여 반환함.
*
* 주요 코드 출처: http://codepad.org/lCypTglt
*
* @param s utf-8로 인코딩된 멀티바이트 문자열.
* (utf-8이 아니면 웹에서 제대로 인식하지 못할 수 있습니다.)
* @return URL 인코딩된 문자열
*/
std::string UrlEncode(const std::string &s)
{
//RFC 3986 section 2.3 Unreserved Characters (January 2005)
// 참고: http://ko.wikipedia.org/wiki/퍼센트_인코딩
const std::string unreserved = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_.~";
std::string escaped="";
for(size_t i=0; i<s.length(); i++)
{
if (unreserved.find_first_of(s[i]) != std::string::npos)
{
escaped.push_back(s[i]);
}
else
{
escaped.append("%");
char buf[3];
/* char를 unsigned char로 바꿔주어야 합니다.
* (그렇지 않으면 한글 등의 문자를 제대로 변환하지 못합니다.)
*/
sprintf(buf, "%.2X", (unsigned char) s[i]);
escaped.append(buf);
}
}
return escaped;
}
참고 자료
[1] 소스코드 참고: http://codepad.org/lCypTglt
[2] 위 소스코드를 발견한 곳: http://www.zedwood.com/article/cpp-urlencode-function
[3] 퍼센트 인코딩에 대한 정보: http://ko.wikipedia.org/wiki/퍼센트_인코딩
댓글
댓글 쓰기