Query를 통해 전달된 데이터를 이용하기위해서는 입력된 폼 데이터가 어떠한 인코딩 기법에 의해서 CGI 프로그램에 전달되는지 알아야 한다.
앞에서 폼 관련 태그를 설명할 때 말했듯이 폼에 입력된 사용자 데이터는 "application/x-www-form-urlencoded"란 인코딩 기법을 이용하여 전송된다.
application/x-www-form-urlencoded 인코딩
일반적으로 그림과 같은 폼을 제출하면
name=%B1%E8+%C0%E7+%B1%D9&passwd=lbxjgwyr
와 같은 데이터가 서버로 전달 된다. 여기서 name, passwd는 <Input> 태그의 이름이며, %B1%E8+%C0%E7+%B1%D9와 lbxjgwyr는 사용자가 입력한 값이다.
공백(+)
%B1%E8+%C0%E7+%B1%D9에서 알 수 있듯이 공백은 +로 대치된다.
특수문자(%HH)
알바벳과 숫자, 몇몇 구두점을 제외한 모든 문자는 %HH 형식으로 전송된다. 한글은 확장 그래픽코드 두 문자를 한글 한글자로 사용하므로 "김 재 근"은 다음과 같이 전송된다.
예) %B1%E8+%C0%E7+%B1%D9
즉, 그 문자의 16진수 값을 ASCII로 변환한 후 %를 붙여서 전송하게된다.
name=value
FORM에서 지정한 이름(name)과 사용자의 입력(value)는 항상 "=" 묶여 전송된다.
예) name=%B1%E8+%C0%E7+%B1%D9
name1=value&name2=value2
하나 이상의 <Input>이나 <Select> 태그, <Textarea>을 갖는 폼의 경우, 각각의 name=value 쌍은 &로 묶여 전송된다.
name=%B1%E8+%C0%E7+%B1%D9&passwd=lbxjgwyr