본문 바로가기

프로그래밍/JAVA

JAVA 한글자르기(Feat 한글깨짐)


JAVA 한글자르기


 1> 현상

  -  개발 도중 타기관 연계를 진행하면서 한글이 깨져서 들어오는 현상이 발생

    

2> 사유 

  -  JAVA에서 한글의 경우 2바이트(EUC-KR)으로 처리가 되는데 타기관에서 전송전 정의된 20자리로 자를때 아무생각없이 

     잘라서 보내주다 보니 띄워쓰기 또는 영문등 홀수 바이트로 된 한글영문 혼용이 있을경우 깨지게 됨 

      Ex)  SOS처리를위한우리의자세(총 23자리)  => SOS처리를위한우리의? (총 20자리)


3> 처리 방안

 1) 연계기관에 똑바로 던지라고 얘기한다 ( <= 가장좋은 방법 )

 2) 니들이 어떻게 던지든 우리가!!! 처리한다! ( a.k.a 우리는 ... 힘이 없으니까! ) 


4> 처리방법

 - 그래서 어떻게 처리를 할 껀가~ 우리에게는 Gotgle 이 있으니~  google에 JAVA 한글자르기를 검색해보면 여러가지 방법이 많이 나오는데 

  ( Naver, okky 등등에서 한글 자르기를 위한 기본 지식에 대해 작성된 문서와 정보들이 있다)

  그중에서 그래도 쓸만해 보이는 아래의 코드를 차용하기로 했다. 글 쓴 연도가 2004년이다 무려 15년이나 된 코드~!!!! # 출처는 OKKY

public static String cutString(String str, int len) { 

  byte[] by = str.getBytes();
  int count = 0;
  try  {
       for(int i = 0; i < len; i++) {

            if((by[i] & 0x80) == 0x80) count++; // 핵심 코드

       }

       if((by[len - 1] & 0x80) == 0x80 && (count % 2) == 1) len--; // 핵심코드

       return new String(by, 0, len);   

  }
  catch(java.lang.ArrayIndexOutOfBoundsException e)
  {
       System.out.println(e);
       return "";
  }


5> 처리 원리???

 - 근데 왜 저렇게 되는지는 찾기 힘들다.. 왜?? 저렇게 하면 한글이 깨지지는 않는데 정확히 왜!!!!!!!!!!!!!!!!!!!! 라는 의문해소가 

   Source만 보고서는... 쉽지 않다. 역시 고수들 밖에 없구만~ 초식은 알겠지만 내공이 깊지 않아 확인 할 수 가 없다.


원리의 설명은 다음편으로~  한글자르기 2편



'프로그래밍 > JAVA' 카테고리의 다른 글

JAVA 한글자르기(유니코드)  (0) 2019.01.07