'글자깨짐'에 해당되는 글 1건

  1. 2019.10.12 Character encoding simple check 간단한 한글 인코딩 확인
반응형

서버에서 데이터를 받아 오는 경우 모든 문자가 알파벳이나 숫자라면 상관 없지만 한글이 섞여 있다면 글자가 깨지는 문제가 발생하고 어떤 인코딩이 사용되었는지 확인하기 어려운 경우가 있다. 아래와 같이 단순한 방법으로 간단히 확인 할 수 있다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
try {
    Log.d("Encoding Check""utf-8 -> euc-kr: " + new String(str.getBytes("utf-8"), "euc-kr"));
    Log.d("Encoding Check""utf-8 -> ksc5601: " + new String(str.getBytes("utf-8"), "ksc5601"));
    Log.d("Encoding Check""utf-8 -> x-windows-949: " + new String(str.getBytes("utf-8"), "x-windows-949"));
    Log.d("Encoding Check""utf-8 -> iso-8859-1: " + new String(str.getBytes("utf-8"), "iso-8859-1"));
 
    Log.d("Encoding Check""iso-8859-1 -> euc-kr: " + new String(str.getBytes("iso-8859-1"), "euc-kr"));
    Log.d("Encoding Check""iso-8859-1 -> ksc5601: " + new String(str.getBytes("iso-8859-1"), "ksc5601"));
    Log.d("Encoding Check""iso-8859-1 -> x-windows-949: " + new String(str.getBytes("iso-8859-1"), "x-windows-949"));
    Log.d("Encoding Check""iso-8859-1 -> utf-8: " + new String(str.getBytes("iso-8859-1"), "utf-8"));
 
    Log.d("Encoding Check""euc-kr -> utf-8: " + new String(str.getBytes("euc-kr"), "utf-8"));
    Log.d("Encoding Check""euc-kr -> ksc5601: " + new String(str.getBytes("euc-kr"), "ksc5601"));
    Log.d("Encoding Check""euc-kr -> x-windows-949: " + new String(str.getBytes("euc-kr"), "x-windows-949"));
    Log.d("Encoding Check""euc-kr -> iso-8859-1: " + new String(str.getBytes("euc-kr"), "iso-8859-1"));
 
    Log.d("Encoding Check""ksc5601 -> euc-kr: " + new String(str.getBytes("ksc5601"), "euc-kr"));
    Log.d("Encoding Check""ksc5601 -> utf-8: " + new String(str.getBytes("ksc5601"), "utf-8"));
    Log.d("Encoding Check""ksc5601 -> x-windows-949: " + new String(str.getBytes("ksc5601"), "x-windows-949"));
    Log.d("Encoding Check""ksc5601 -> iso-8859-1: " + new String(str.getBytes("ksc5601"), "iso-8859-1"));
 
    Log.d("Encoding Check""x-windows-949 -> euc-kr: " + new String(str.getBytes("x-windows-949"), "euc-kr"));
    Log.d("Encoding Check""x-windows-949 -> utf-8: " + new String(str.getBytes("x-windows-949"), "utf-8"));
    Log.d("Encoding Check""x-windows-949 -> ksc5601: " + new String(str.getBytes("x-windows-949"), "ksc5601"));
    Log.d("Encoding Check""x-windows-949 -> iso-8859-1: " + new String(str.getBytes("x-windows-949"), "iso-8859-1"));
catch(Exception e) {
    e.printStackTrace();
}



Logcat을 확인해 보면 'iso-8859-1 -> utf-8'이 정상적으로 한글을 표시했다.


그런데 위 코드 중 'utf-8 -> iso-8859-1'은 Logcat에 출력 되지 않는다. System.out.println()으로 해도 출력되지 않지만, 이 문자열을 기기에서 출력해 보면 깨진 한글로 표시는 된다. 이유는 알 수 없다.

1
    Log.d("Encoding Check""utf-8 -> iso-8859-1: " + new String(str.getBytes("utf-8"), "iso-8859-1"));



반응형
Posted by J-sean
: