Java 컨테이너에 Form 값의 encoding 깨질 때

2010-10-22

점검사항은 아래 세가지.

  1. 폼에서 정확히 인코딩을 지정해서 넘겨주는가?
  2. 서버에서 정확히 인코딩을 인식하는가?
  3. DB에서 정확히 인코딩을 인식하는가?
이다.
  1. 폼에서 정확히 인코딩을 지정해서 념겨주는가?

    이 경우는 일단 문서 첫머리에 meta태그가 utf-8으로 지정되어 있고, 폼에 accept-charset 어트리뷰트가 지정되어 있고, 브라우저에서 확인해서 문서가 utf-8으로 읽히는 상황이라면 문제 없다고 보면 된다. UTF-8으로 나와야 하는 페이지가 UTF-8으로 안나오는 경우는 여기서 다룰 게 아니다.

    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <meta charset="UTF-8" /> <form accept-charset="UTF-8" >
  2. 서버에서 인코딩을 제대로 인식하는가?

    경험상 대부분 문제는 여기서 발생한다. 특히 서버 관리자와 프로그래머가 독립적으로 있고, 서로 업무 연계가 힘든 상황이라면 더욱 문제다. 가능하면 인코딩을 서버 설정에 맞추자. java라면 아래와 같이 해결. request.setCharacterSet("utf-8"); php도 비슷한 게 있을 터다. 하지만 여기서는 문제를 못 봤으니까 빼고. 일단 대부분의 문제는 저걸로 해결될 거다.

  3. DB에서 정확히 인코딩을 이해하는가?
  4. DB님에게는 개기지 말자. 원하시는 인코딩을 알아낸 다음, 어떻게든 맞춰서 보내주자. 사실 이쪽은 잘 모르겠다. 문제 일어난 적도 없고. 인코딩이 달라도 잘 되더라.

    포인트는 이것, 원인은 크게 세가지니까 하나씩 제대로 되었는지 시험해볼것.

이 책을 권한다 성과물 2010년 10월 중순