일단 현재 사용되고 있는 (자바단에서) 캐릭터셋이 무엇인지 파악한다.
public static void charSet(String str_kr) throws UnsupportedEncodingException{
String charset[] = {"euc-kr", "ksc5601", "iso-8859-1", "8859_1", "ascii", "UTF-8"};
for(int i=0; i<charset.length ; i++){
for(int j=0 ; j<charset.length ; j++){
if(i==j) continue;
Log.TraceLog(charset[i]+" : "+charset[j]+" :"+new String(str_kr.getBytes(charset[i]),charset[j]));
}
}
}
요걸 쓰면 바로 어떤 캐릭터셋인지 알수 있다.(한글이 안깨지는게 현재 캐릭터셋)
나는 UTF-8로 캐릭터셋을 변경해주었음에도 불구하고 이걸로 찍어보니
EUC-KR로 나오는 황당한 경우가 발생하였다.
일단 그래서 UTF-8로 하려던 것을 다 포기하고...
connection 맺는 클래스를 이렇게 짯다.
package com.telco.common.util;
import java.sql.Connection;
import java.sql.DriverManager;
public class ConnectionMgr2 {
Connection conn = null;
String url = "jdbc:mysql://150.23.11.196:3306/dcd?useUnicode=true&characterEncoding=euckr";
String user = "dcd";
String password = "dcd1234";
public Connection getConnection()
{
try
{
Class.forName("org.gjt.mm.mysql.Driver");
//String jdbcDriver = "jdbc:apache:commons:dbcp:/pool";
conn = DriverManager.getConnection(url, user, password);
//conn = DriverManager.getConnection(jdbcDriver);
return conn;
}
catch(Exception e)
{
Log.TraceLog(e.toString());
e.printStackTrace();
if(conn != null) try{ conn.close(); conn = null; } catch(Exception e2){};
return null;
}
}
}
커넥션을 맺을때 EUC-KR 옵션을 주는 것이 핵심 포인트였다.
이렇게 하면 모든 설정이 다 EUC-KR로 되는 모양이다.
결국 해결되어 너무 기쁘다.
댓글