안드로이드,아이폰에서 euc-kr 한글을 utf-8 변환 (euc-kr -> utf-8)

개발/안드로이드 2017. 9. 7. 05:55
반응형

서버에서 받은 데이터가 EUC-KR 한글 일때 이것을 팝업창이나 로그로 출력해 보면 글자가 깨져보일 것입니다.

그럴때 UTF-8로 변환하여 출력 해야합니다.


사이트에서 여러개 찾아 보았으나 변환이 제대로 안되는게 많아 직접 작성해 보았습니다.


안드로이드

일반 적으로 euc-kr을 utf-8로 변환하려면 변환테이블을 가지고 계산을 해야 하지만 안드로이드에서 쉽게 사용할 수 있도록 API를 제공하고 있습니다.  

byte[] byMsg = strData.getBytes();
Charset euckrCharset = Charset.forName("euc-kr");
CharBuffer charBuffer = euckrCharset.decode(ByteBuffer.wrap(byMsg));
String strMsg = charBuffer.toString();

직접 사용하고 있는 코드이니 정상적으로 동작할 것입니다. 테스트는 안해 봤지만 Charset.forName을 utf-8로 변경하면 반대로도 가능할 듯하네요.


iOS

아이폰에서도 API를 제공하고 있습니다.


  NSUInteger nEncodingEuckr = 0x80000000 + kCFStringEncodingDOSKorean;

  const char * eucKRString = [strData cStringUsingEncoding:nEncodingEuckr];

  int cnt1 = (int)strlen(eucKRString);

  NSData *byBodyData = [NSData dataWithBytes:(const void *)eucKRString 

                                                           length:sizeof(unsigned char)*cnt1];

  NSString *strMsg = [[NSString allocinitWithData:byBodyData encoding:NSUTF8StringEncoding];



안드로이드, iOS 둘다 동시에 제작하다보니 사용한 코드를 작성해 보았습니다.



반응형
admin