본문 바로가기
MY-SQL/자바와 mysql 한글 insert 문제

자바에서 MYSQL 한글 insert 캐릭터셋 문제

by 정윤재 2009. 4. 29.

일단 현재 사용되고 있는 (자바단에서) 캐릭터셋이 무엇인지 파악한다.

 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로 되는 모양이다.

결국 해결되어 너무 기쁘다.



댓글