본문 바로가기

StoreHouse/Java

Jsp form 을 이용한 한글 문제 해결

[CODE]한글문제로 항상 떠오르는 것 중의 하나는 바로 파라미터를 한글 그대로 넘겨주는 것이 아닌가 합니다. 실질적으로 HTTP 프로토콜에서 URL을 부를 때는 US-ASCII(7비트 영영)만 사용가능하다고 하고, 그것도 몇몇 특수문자는 또 안됩니다. 그래서 한글이나 특수문자를 보내기 위한 해결책이 특수문자와 8비트 영역(한글)의 문자들을 7Bit로 인코딩(즉, URL 인코딩 %EA%20 뭐 이런거..)해서 보내는 것이지요. 톰캣의 경우에는 URL에 들어간 한글 파라미터를 잘 읽습니다.(즉, 비표준적인 형태의 URL을 읽습니다.) 하지만 톰캣이 그런다고 다른 웹서버들이나 JSP 컨테이너도 그러란 법은 없습니다. 일단 한글을 쓰는 것 자체가 비표준이므로. 게다가 톰캣이라 하더라도 한글만 넘겨주면 다행이지만 공백같은 특수한 문자까지 넘겨준다면 그 고생이 이만저만이 아닙니다. 그래서 저는 get 방식으로 어떤 링크를 부를때 한글이 들어갈 여지가 있으면 무조건 form을 이용합니다. form 하나면 한글과 공백같은 모든 문제가 한방에 해결됩니다. form 을 이용하면 웹 브라우저가 알아서 URL인코딩을 해주니까요. 다음과 같은 방식입니다.
태그에다가 그 페이지에서 유일한 이름을 지정해주고, 전체보기부분에서 그 폼을 submit() 하는 것입니다. 의 문제점 중의 하나는 그것이 화면 레이아웃을 흐트러뜨린다는 것입니다. 그에 대한 해결책도 CSS를 사용하면 간단합니다. 입니다. 스타일에서 display:none 을 지정하면 화면상에 아무런 영향도 못끼칩니다. 또다른 방법으로는 과 사이같이 화면에 나타날 수 없는 그런 부분에다가 을 박아넣는 것입니다. CSS없이도 화면 레이아웃에 영향없이 폼을 사용할 수 있게됩니다. 한글문제로 고생하고 싶지 않다면 되도록 링크이름 같은 형태의 링크 사용은 자제하시길.[/CODE]