우선...코드를 먼저 보시는 게 설명이 쉬울 듯 하여, 코드를 올립니다.


    String fileEncoding=System.getProperty("file.encoding");
        System.out.println("file.encoding = "+fileEncoding);

        String Encoding = "한글";
        try {
            String toBinaryRaw = new String(Encoding.getBytes() );
        System.out.println("Binary Raw Data:" + toBinaryRaw );
        ShowAllByte( toBinaryRaw );
            String toISO_8859 = new String(Encoding.getBytes(),"ISO-8859-1");
        System.out.println("ISO-8859-1 Encoding : " + toISO_8859 );
        ShowAllByte( toISO_8859 );
        String toUtf_8 = new String(Encoding.getBytes(),"utf-8");
        System.out.println("UTF-8 Encoding : " + toUtf_8);
        ShowAllByte( toUtf_8 );
        String toEUCKR = new String(Encoding.getBytes(),"euc-kr");
        System.out.println("toEUCKR Encoding : " + toEUCKR );
        ShowAllByte( toEUCKR );
        String toUTF8_EUCKR = new String( Encoding.getBytes("utf-8"),"euc-kr");
        System.out.println("toUTF8_EUCKR Encoding : " + toUTF8_EUCKR );
        ShowAllByte( toUTF8_EUCKR  );
        String toksc5601 = new String(Encoding.getBytes(),"KSC5601");
        System.out.println("KSC5601 Encoding : " + toksc5601);           
        ShowAllByte( toksc5601 );
        String toms949 = new String(Encoding.getBytes(),"ms949");
        System.out.println("MS949 Encoding : " + toms949);           
        ShowAllByte( toms949 );

    } catch (UnsupportedEncodingException e) {
        e.printStackTrace();
    }


보시는 바와 같이, 한글 인코딩 / 디코딩 테스트를 위한 코드입니다.
이클립스 환경은 UTF-8로 되어 있습니다. 그래서 실행시키면

file.encoding = utf-8
Binary Raw Data:한글
Size: 6 Byte: [0xed 0x95 0x9c 0xea 0xb8 0x80  )
ISO-8859-1 Encoding : 한글
Size: 12 Byte: [0xc3 0xad 0xc2 0x95 0xc2 0x9c 0xc3 0xaa 0xc2 0xb8 0xc2 0x80  )
UTF-8 Encoding : 한글
Size: 6 Byte: [0xed 0x95 0x9c 0xea 0xb8 0x80  )
toEUCKR Encoding : ���
Size: 9 Byte: [0xef 0xbf 0xbd 0xef 0xbf 0xbd 0xef 0xbf 0xbd  )
toUTF8_EUCKR Encoding : ���
Size: 9 Byte: [0xef 0xbf 0xbd 0xef 0xbf 0xbd 0xef 0xbf 0xbd  )
KSC5601 Encoding : ���
Size: 9 Byte: [0xef 0xbf 0xbd 0xef 0xbf 0xbd 0xef 0xbf 0xbd  )
MS949 Encoding : �쒓�
Size: 9 Byte: [0xef 0xbf 0xbd 0xec 0x92 0x93 0xef 0xbf 0xbd  )

이와 같이 나옵니다.
서버가 EUC-KR이라, Client쪽에서 UTF-8 -> EUC-KR로 바꾸어 주려 합니다.

근데, 처음에  new String( Encoding.getBytes(), "EUC-KR"); 해도 자꾸 한글이 깨지길레, 아무래도 이상해서 Client에서 전송 전에 Binary값을 찍어 보니 위와 같은 결과를 얻었습니다.

저는 String( Encoding.getBytes(), "EUC-KR" ) 하면 6Byte의 UTF-8 "한글" 이  4Byte의 EUC-KR "한글" 로 바뀔 거라고 생각했는데, 실제로 찍어보니 6바이트가 아니라 9바이트가 됐네요?

저걸  new String( Encoding.getBytes("UTF-8"), "EUC-KR"); 로도 해 봤습니다만...마찬가지구요.

인터넷 뒤져보면 다른 분들은 단순히 String( text.getBytes( FromEncode ), ToEncode ) 만으로도 문제없이 사용하시는 듯 한데,
저는 뭐가 문제인지 모르겠습니다.


혹시 제가 이해 자체가 잘못되었다면 잘못된 부분을 언급해 주시면 감사하겠구요.
만일 비슷한 경우를 겪으셨거나, 혹은 조언이 있으시다면, 주저없이 알려 주시면 대단히 감사하겠습니다.

이상입니다. 좋은 저녁 되시기 바랍니다.

여름철 메뚜기가 마냥 부러운 1人