관리 메뉴

SIMPLE & UNIQUE

Get으로 Url보낼때 한글 깨짐 본문

Java & Spring/Solution

Get으로 Url보낼때 한글 깨짐

착한코딩 2017. 3. 15. 14:46

URIEncoding

  • HTTP body의 입력 데이터는 기본으로 UTF-8로 디코딩된다.
  • 반면 URL은 ISO-8859-1으로 디코딩한다.(한글이 깨지는 이유)
  • 브라우저에서 Form 데이터를 기본설정으로 UTF-8 인코딩하므로
  • Form으로 전송되는 데이터는 한글이 깨지지 않는다.

1. Jsp나 js에서 get으로 [url?name="한글"]을 보냈는데, Controller에서 한글이 깨진다.


    • get을 하기 전에 encodeURIComponent(name)을 해주고,
       Controller에서 new String("name".getBytes(8859_1"), "UTF-8")을 해준다.

      => 하지만 이 경우 다른 jsp파일에서 post로 동일한 Controller의 같은 변수를 사용할때, 한글이 깨진다.
      (데이터를 UTF-8로 받아왔는데 다시 디코딩을 하기 때문에) 

    • 해결방법 - Controller에서 post일 경우 get일경우 구분해서 디코딩을 적용할 수 도 있지만
                       server.xml의 Connector에 URIEncoding="UTF-8"을 추가하는 것이 더 깔끔하다.

      <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000"
                                                                                  redirectPort="8443"  URIEncoding="UTF-8"/>



Comments