안드로이드,아이폰에서 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 alloc] initWithData:byBodyData encoding:NSUTF8StringEncoding];
안드로이드, iOS 둘다 동시에 제작하다보니 사용한 코드를 작성해 보았습니다.
'개발 > 안드로이드' 카테고리의 다른 글
안드로이드 Custom ListView를 만들어보자 (4) | 2017.09.28 |
---|---|
안드로이드 Java ArrayList, List <=> String[] 변환 (0) | 2017.09.20 |
안드로이드 Java String 문자열 다루기 정리 (0) | 2017.09.18 |
ListView Custom 기본코드 (0) | 2017.09.15 |
Dialog 팝업창 종류 및 커스텀 Dialog 팝업창 (0) | 2017.09.05 |
앱내 Webview에서 HTTPS 처리 이슈 (0) | 2017.08.09 |
안드로이드 String 메모리 보안이슈 해결하기 (메모리 취약점) #1 (0) | 2017.08.06 |
안드로이드 6.0 (Marshmallow) 권한 획득하기! (1) | 2017.08.04 |