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 |
---|