물에 살고싶은 개발자

[Spring] HTTP 통신 시 특수문자 처리 본문

C#

[Spring] HTTP 통신 시 특수문자 처리

돼지사랑 2016. 7. 19. 17:17

다른것도 그런지는 모르겟지만..

Spring 프레임워크를 사용할때 클라이언트에서 서버로 리퀘스트를 날릴때 

UTF-8 인코딩을 할 경우 문제가 생길때가 있다.


일단 나는 json방식으로 오고가는 방식을 이용하고 있고, 서버측에선 이걸 HashMap 형태로 받는데, 문제는 리퀘스트를 보내는 인자값.

그러니까 맵 형태의 키:값 중 한군데에 특수문자가 들어갈 경우


해당 인덱스가 아예 제외되는 경우가 있다.

특수문자에따라 다 다르고 해당문제는 문제가 되는 특수문자를 UTF코드에 맞게 Replace하면 그만이긴 하다. (예를들면 %를 %25로 Replace)

그러나 문제가 되는게 한두개라는 보장이 없고 이런식의 하드코딩은 피하는것이 좋다.


그래서 기나긴 삽질끝에...(사실 나랑 비슷한케이스가 거의 없더라...ㅠㅠ 죄다 ajex같은 내가 다뤄보지못한 것들이라...) 인코딩방식을 바꾸면 된다는걸 알았다.


어쩌고저쩌고 말이 길었지만


결국 그냥


string strEncode = HttpUtility.UrlEncode("특수문자가 들어간 문자열");


이렇게 인코딩해서 보내버리면 된다.


참고로 이거 인코딩 한번만해서 바로 보내면 결과가 똑같은점 명심해야한다.

기존에 UTF8로 인코딩하는부분은 놔두고 그 이전에 미리 한겹 더 인코딩을 해야한다는점을 주의해야겠다.


아 뭐 끝!



출처 : http://docko.tistory.com/entry/C-Url-%ED%8C%8C%EB%9D%BC%EB%A9%94%ED%84%B0-%EC%9D%B8%EC%BD%94%EB%94%A9%ED%95%98%EA%B8%B0

Comments