스마트기기개발관련/안드로이드 개발

안드로이드 문자열 인코딩 관련

AlrepondTech 2011. 7. 13. 17:59
반응형

 

 

 

 

 

=================================

=================================

=================================

 

 

 

 

 

 

출처: http://jhun88.tistory.com/entry/UTF-8-EUC-KR

갤탭 개발하면서 인코딩 부분때문에 애먹었다. 대부분 서버파트에서는 EUC-KR를 통해 인코딩되어 있고 로컬에서는 utf-8를 주로 사용하기 때문에 서버에 등록하거나 가져올때는 적절한 인코딩을 해주어야 한다. 

 
우리가 자바를 쓸때 고맙게도 EUC-KR로 인코딩 해주지만, 안드로이드 개발할 때 xml에서 "UTF-8"로 세팅해놨기때문에 안드로이드 개발에서는 한글을 utf-8로 인코딩 해준다. 즉, utf-8로 이루어진 byte로 String을 만들면 자바에서는 EUC-KR로 인코딩 해주지만 안드로이드에서는 UTF-8로 인코딩한다는 것이다.(다음 코드 참조)
1
2
3
4
5
6
7
8
try{
    groupName = new String(currentGroup.groupName.getBytes(), "utf-8");
}catch(UnsupportedEncodingException e)
{  
    if(AppMgr.DEBUGMODE)
         CommonUtil.ShowMessageBox("인코딩실패", null);
    return;
}
따라서 직접 인코딩을 해주어야 한다. 다음과 같이 Charset, CharsetEncoder를 이용하여 원하는 인코딩방식으로 인코더 클라스를 만든 후, 다음 코드 처럼 인코딩 해주면 된다. 인코딩이 안될수도 있으니 CharacterCodingException도 잡아줘야 한다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
String boowak = "boowak";
byte[] groupName = new byte[30];
        try{
        Charset b = Charset.forName("euc-kr");
        CharsetEncoder encoder = b.newEncoder();
        CharsetDecoder decoder = b.newDecoder();
 
        ByteBuffer bb = encoder.encode(CharBuffer.wrap(boowak));
        byte[] c = new byte[bb.remaining()];
        bb.get(c);
        System.arraycopy(c, 0, groupName, 0, c.length);
        } catch (CharacterCodingException e)
        {
            System.out.println("encoding and decoding failed");
            return;
        }

///////////////////////////////////////////////////////////////////////////////////////////////////////



db 만들기 위해 문자열을 txt 파일에서 가져올때 ksc5601로 지정해 주니까 문제가 해결되었습니다.

String filename = "/sdcard/make.txt";
File file = new File(filename);
FileInputStream secFile = new FileInputStream(file);
BufferedReader br = new BufferedReader(new InputStreamReader(secFile, "KSC5601"));

...

strLine = br.readLine();
values.put(MDBSECTIONCNT, strLine);
...

 

 

=================================

=================================

=================================

 

 

 

반응형