2016년 1월 22일 금요일

C# WebForm : Get 방식으로 특수문자를 파라메타로 전달시에는 UrlEncode 를 사용하면 된다.

Get 방식으로 특수문자나 한글을 전달할 때 가끔 문제가 된다.

간단히 예제를 만들어 보면...


웹페이지를 만들고...


버튼을 클릭하면 원래 페이지로 Get 파라메터를 전달 한다.
일반적인 값은 정상적으로 잘 전달되겠지만, 특수 문자나 한글은 문제가 생길거다...


이렇게 해놓고 버튼을 클릭해 보면...


파라메타 P1 의 값에 있는 특수문자 "&" 때문에 파라메터 값이 잘린다.


이 특수한 값을 제대로 전달 할려면, UrlEncode 를 사용하면 된다.
이렇게 하면...


 이렇게 정상적으로 값이 전달 된다.
한글은 encoding 이 안된것 같지만... 저 주소창의 값을 복사해서 메모장 같은데 붙여 넣어 보면...


그냥 한글로 보이지만, 사실은 인코딩 값이 들어가 있다.
(요즘은 한글은 자동으로 인코딩 해줘서 한글은 궂이 인코딩 해주지 않아도 되지만, 그래도 가급적 직접 해주는게 좋다.)

참고로, 예제에는 보낼때는 Encoding 하고 받을 때는 그냥 썻지만, 원래는...


보낼때는 Encoding 으로 보내고, 받을때 Decoding 해서 쓰는게 정석이다.
뭐... 그냥 해도 잘되니... 그냥 쓰기도 하지만... 괜히 나중에 고생하지 않으려면 다 써놓는게 좋다.