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