sitelink1 https://stackoverflow.com/questions/2678...plus-or-20 
sitelink2 https://stackoverflow.com/questions/1634...cter-or-20 
sitelink3  
sitelink4  
extra_vars5  
extra_vars6  

WWW 폼에서 인코딩한 포스트 데이터, "application/x-www-form-urlencoded"는

공백은 플러스(+) 기호로 인코딩하고 나머지는 퍼센트(%) 뒤에 16진수 아스키값을 출력하는 방식으로 인코딩한다.

 

관련 스펙 => https://www.w3.org/TR/html401/interact/forms.html#h-17.13.4.1

 

PHP, JavaScript, VC++ 등의 언어에서는 다음과 같은 encode함수를 제공한다

 

PHP의 urlencode()와 rawurlencode()

 

urlencode()는 "-_."과 영숫자를 제외한 모든 문자를 인코딩한다.
공백은 플러스(+) 기호로 인코딩하고 나머지는 퍼센트(%) 뒤에 16진수 아스키값을 출력하는 방식으로 인코딩한다.
이 인코딩 방식은 WWW 폼에서 인코딩한 포스트 데이터, "application/x-www-form-urlencoded"와 같은 방식이다.
rawurlencode()는 RFC1738의 규약대로 인코딩한다. RFC1738에서는 공백을 "%20"으로 인코딩한다.

참고: http://kr2.php.net/urlencode, http://kr2.php.net/rawurlencode


-------------------------------------------------------------------------------
JavaScript의 URLEncode, URLDecode 구현

알파벳, 숫자, "-_.!~*'()"는 Safe 문자로 구분하여 그대로 사용하고, 공백은 "+"로, 그밖의 Unsafe 문자는 "%xx"로 인코딩한다. xx에는 16진수의 아스키값이 온다.
참고로 JavaScript에서 제공하는 escape(), unescape()는 공백을 "%20"으로 인코딩하고 "+"를 Safe 문자로 구분한다.

참고: http://www.albionresearch.com/misc/urlencode.php


-------------------------------------------------------------------------------
VC++에서 POST 요청 구현

참고: http://support.microsoft.com/?kbid=165298