안녕하세요.
인코딩 문제로 질문을 드립니다.
안드로이드에서 EditText를 통해서 입력 받은 데이터를 서버로 전송해야 합니다.
문제는 안드로이드에서 입력된 한글 데이터 중 샾, 힣, 뷁 같은 UTF-8 로는 표현되지만
EUC-KR로는 표현 안되는 값이 포함되면 서버에서 에러가 발생합니다.
서버에서 처리해 주면 좋을 텐데 서버 개발자가 힘들다고 단말에서 해당 문자를 제거해주길 원합니다.
그래서 java 에서 아래와 같이 테스트 해보니될 것 같았습니다.
String word = "샵, 샾, 뷁, 힝, 힣";
try {
String euckr = new String(word.getBytes("euc-kr"), "euc-kr");
String utf = new String(word.getBytes("utf-8"), "utf-8");
System.out.println("origin : " + word);
System.out.println("euc-kr : " + euckr);
System.out.println("utf : " + utf);
CharsetEncoder en = Charset.forName("euc-kr").newEncoder();
for(int i=0; i<word.length(); i++) {
char ch = word.charAt(i);
boolean can = en.canEncode(ch);
System.out.println(ch + " is can encode. ( "+can+" )");
}
}
catch(Exception e) {e.printStackTrace();}
결과 값이 아래처럼 나왔습니다.
origin : 샵, 샾, 뷁, 힝, 힣
euc-kr : 샵, ?, ?, 힝, ?
utf : 샵, 샾, 뷁, 힝, 힣
샵 is can encode. ( true )
샾 is can encode. ( false )
뷁 is can encode. ( false )
힝 is can encode. ( true )
힣 is can encode. ( false )
그래서 이 코드를 바탕으로 안드로이드에 적용해 보았으나
안드로이드에서는 먹히지가 않습니다.
어떻게 해야 안드로이드에서 EUC-KR에 없는 문자를 제거할 수 있을까요?