안녕하세요.
질문 좀 올려드립니다.
문제) 한글이 깨져요.
A. JSP ---- MSSQL 2005 구성입니다.
A.JSP 단에서
<%@ page contentType="text/html;charset=euc-kr" %>
String jdbcDriver = "jdbc:sqlserver://localhost:1433;databaseName=unDonate;useUnicode=true;characterEncoding=EUC-KR";
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
String jdbcDriver = "jdbc:sqlserver://localhost:1433;databaseName=unDonate;useUnicode=true;characterEncoding=UTF-8";
등 언어셋을 바꾸어 가면서 B.JSP 단에서 아래와 같이 문제없이 나옵니다. (안녕 한국어)
지금은 EUC-KR 로 바꾼 출력이구요
----------------------------------------------------------------------------------------
KSC5601 : 8859_1 :¨?¡??????¡¾?
KSC5601 : ascii :????????????
KSC5601 : UTF-8 :????????
KSC5601 : EUC-KR :¼¸???±?
KSC5601 : MS949 :¼¸???±?
8859_1 : KSC5601 :안녕
8859_1 : ascii :????????
8859_1 : UTF-8 :???????
8859_1 : EUC-KR :안녕
8859_1 : MS949 :안녕
ascii : KSC5601 :????????
ascii : 8859_1 :????????
......
----------------------------------------------------------------------
즉 JSP는 문제가 없는데
그런데 MSSQL 2005 에서는 아래와 같이 나와요. (INSERT문)
깨지는 필드 (
CC³±æ <----
사람 인격 테스트를 하네요.
구글링을 해보니 NVARCHAR 이야기가 나오던데
필드는VARCHAR 타입니다.
Collation명도 Korean_Wansung_CI_AS이구요
그런데 기존부터 한국어가 정상적으로 들어가 있습니다. (다른 외부 프로그램이 이 테이블을 같이 사용하거든요
추가화면 만들어서 INSERT 하고 있구요.
서버 설정을 보자면
SELECT @@LANGUAGE ==> 한국어
Collation도 KOREAN_WANSUG_CI_AS 이구요
UTF-8도 안들어가고 EUC-KR로 안들어가면 어떻게 하자는 건지..참..
기존에 한글에 있으니 collation 변경도 못하지 않나요?
아시는 분 답변 부탁드립니다.
언어 문제는 잘 될때는 모르는데, 한번 문제가 생기면 난관이죠,,
고민을 덜 하려면 nvarchar 로 변경하시는게 좋을 수 있습니다,,
테이블 크기가 매우 크지 않다면, 기존 테이블을 버퍼 테이블 하나 만드셔서 옮기시고,
기존 테이블도 nvarchar로 다시 만들어서 데이터를 넣어보세요,,,
1.버퍼 테이블 생성 (nvarchar로 정의. 템프 테이블로 하지 않는 이유는 중간에 세션이 끊기기라도 하면 데이터 모두 날아 갑니다;;)
2.기존 데이터를 버퍼 테이블로 복사
3.기존 테이블 다시 생성 (nvarchar로 정의)
4.버퍼 테이블에 있는 데이터를 새로 만든 테이블로 복사
5.버퍼 테이블 삭제 (옵션)