안녕하세요 김일형입니다.
저도 사실 이부분이 디게 헷갈리는 부분인데요...
일단 2부분에서 처리를 해주어야 합니다.
페이지를 출력할 당시 Servlet내에 실제 html문장을 써주기 전에
res.setContentType("text/html; charset=euc-kr" );
이라고 명시를 해주어야 합니다. 그래서 이 페이지가 한국어로 되어있다는 것을 알리는 것이죠.
그리고 두번째단계를 실제 인서트를 하거나 디비에서 가져온 내용을 출력하는 것인데요... 이게 웹을 통해 건너온 문자는 일단 유니코드로 건너옵니다. 이것의 인코딩을 바꿔주는 부분입니다.
1. 디비로 입력을 하고자 할 경우...
target = new String( source.getBytes("8859_1"), "KSC5601" );
source 는 사용자가 입력한 유니코드
target 은 디비에 넣을 변환된 문자 코드
2. 디비에서 꺼내 웹에 출력할 경우.
target = new String( source.getBytes("KSC5601"), "8859_1" );
source 는 디비에서 꺼낸 문자열
target 은 웹에 출력할 변환된 문자열
로 합니다.
사람들에 따라서는 사용의 편리성을 위해 독립된 클래스로 만들어서 위의 작업을 간편하게 하기는 합니다.
도움이 되었기를 바랍니다.
김일형.
>>박현성 님께서 쓰시길<<
:: 아파치 톰켓에서 postgreSQL을 사용해 보고 있습니다.
::
:: configure 할때 다음처럼 로케일과 멀티바이트를 가능하게 하였습니다.
:: ./configure --enable-locale --enable-multibyte=EUC_KR --prefix=/usr/local/pgsql
::
:: initdb시에도 -E EUC_KR을 추가해 주었습니다.
:: /usr/local/pgsql/bin/initdb -E EUC_KR -D /usr/local/pgsql/data
::
:: psql로 접속해서 예를 들면 다음과 같은 insert 문은 한글이 아무 이상없이 입력 됩니다.
:: insert into member(name) values('아무개');
::
:: 그런데 웹에서 같은 insert문을 실행시키고 psql에서 select 해보면 ???로 들어가 있습니다.
:: jsp에서 insert하기 직전에 <%= name %>으로 웹에서 확인해보면 '아무개'가 잘 나오는데도 불구하구요.
::
::
:: 어느 부분에 잘못이 있는지 잘 모르겠습니다.
:: 아시는 분의 친절한 답변 부탁드립니다. 감사합니다.
|