헤르메스 LIFE

[Source] Unicode 1.2를 Unicode 2.0 으로 변환 본문

Core Java

[Source] Unicode 1.2를 Unicode 2.0 으로 변환

헤르메스의날개 2010. 10. 20. 15:51
728x90
/**
  * 현재 oracle 7 버전대는 unicode 1.2를 사용하고,
  * oracle 8.1.5 버전부터 unicode 2.0을 사용합니다.
  * 그리고 jdk1.2버전은 unicode 2.0을 사용하지요
  * 그래서 oracle 8.1.5에서 읽어들인 한글은 보이지만,
  * 7버전에서 읽어들인 한글은 unicode 버전차이로 ?표로 표시됩니다.
  * 때문에 oracle 7버전에서 한글을 지원받으려면 
  * DB에서 read할때는 unicode 1.2를 2.0으로, DB로 write할때는 unicode 2.0을 1.2로 
  * conversion 해주는 class를 만들어서 import하여 사용하면 됩니다.
  *
  * UniCode 1.2 을 UniCode 2.0 로 변환
  * @param uni12 변환할 문자 (UniCode 1.2)
  * @return String 변환된 문자 (UniCode 2.0)
  */
 public String convUni12ToUni20(String uni12) {
  if (uni12 == null) return null; 
  int len = uni12.length(); 
  char [] out = new char[len]; 
  byte [] ksc = new byte [2]; 
  for (int i = 0; i < len ; i++) { 
   char c = uni12.charAt(i); 
   if (c < 0x3400 || c > 0x4dff) { 
    out[i] = c; 
   } else if (c >= 0x3d2e) { // Unicode 1.2 한글 보충영역 A, B 
    out[i] = '\ufffd'; 
    System.err.println ("Warning : Some of Unicode 1.2 Hangul Character was ignored."); 
   } else { // Unicode 1.2의 KSC5601 대응 한글 영역 
    try { 
     ksc[0] = (byte) ((c - 0x3400) / 94 + 0xb0); 
     ksc[1] = (byte) ((c - 0x3400) % 94 + 0xa1); 
     out[i] = new String(ksc, "KSC5601").charAt (0); 
    } catch (java.io.UnsupportedEncodingException ex) { 
     log(CLASS_NAME + ".convUni12ToUni20()","UniCode 2.0 변환을 실패했습니다."+ex.toString());
    } 
   } 
  } 
  return new String (out);
 }
728x90