문자 집합의 제한 등으로 인해, 일반적인 유니코드나 ANSI 문자 집합을 그대로 쓸 수 없을 때가 있습니다. 특히 텍스트를 XML이나 이메일 등으로 전달해야 할 때 이런 일이 종종 발생합니다. 이럴 때 우회하는 인코딩 방법으로 base64 인코딩이나 URL 인코딩이 많이 쓰입니다. 여기에선 URL 인코딩을 알아 보겠습니다.
참고:
URL 인코딩은 인터넷 익스플로러에서 사이트 주소를 보다 보면 쉽게 발견할 수 있을 정도로 많이 쓰이는 인코딩입니다. 실제로 구현해 보니 base64 인코딩보다 인코딩 효율이 떨어지는 단점이 있지만, 구현이 간단하고 이해하기 쉬워서 좋습니다.
URL 인코딩을 하려면, 알파벳, 숫자, -, ., _, 그리고 ~는 그대로 표현하고, 그 외의 문자는 16진수로 변환한 값 앞에 %를 붙여서 표현하면 됩니다.
다음은 소스 코드입니다.
using std::string;string encode(const string& source){string target;for (string::const_iterator iterator = source.begin(); iterator != source.end(); ++iterator){const unsigned char source_character = static_cast<unsigned char>(*iterator);if (isalnum(source_character) || strchr("-._~", source_character))target += source_character;else{target += '%';target += convert_to_hex(source_character >> 4);target += convert_to_hex(source_character);}}return target;}char convert_to_hex(char code){return "0123456789abcdef"[code & 0xf];}

댓글을 달아 주세요
-_.~ 이 부분이 아름답군요 크크. ^^
ㅎㅎ 보다 보니 문자 아스키 코드 순서와 맞지 않아서, -._~로 수정했습니다;;
그렇군요 .
ㅎㅎ