반응형

예를 들어서 안드로이드 클라이언트가 다른 외부 서버랑 연결해서 소켓 연결 후 통신을 주고 받는데,

 

아스키코드를 주고 받을 때는 문제가 없지만 한글을 주고 받을 때는 깨지는 현상이 생깁니다.

 

이것은 인코딩과 관련된 문제로 주고 받을 때 클라이언트쪽에서 송수신할 때에 아래와 같이 처리를 해주면 됩니다.

 

보통 Buffered 객체를 많이 쓰므로 이것으로 예를 들겠습니다.

 

//소켓 연결 처리.

SocketAddress remoteAddr=new InetSocketAddress("127.0.0.1",1234);

Socket socket=new Socket();

socket.connect(remoteAddr); //remoteAddr

 

//Buffered 객체 연동.

BufferedOutputStream out=new BufferedOutputStream(socket.getOutputStream()); //output stream

BufferedReader in=new BufferedReader(new InputStreamReader(socket.getInputStream(),"EUC_KR")); //input stream.

 

위 코드를 보면 out은 서버로 데이타를 내보낼 때 쓰고, in은 서버에서 데이타를 받을 때 씁니다.

Reader 객체 생성시 EUC_KR를 주게 되면 서버에서 받는 데이타는 한글이라도 깨지지 않습니다.

 

전송할 때는

 

String data="한글테스트\n";

out.write(data.getBytes("EUC_KR"));

 

이와 같이 EUC_KR 로 인코딩하여 전송하면 해결됩니다.

 

간단한 내용이지만 이것으로 헤매는 분들이 계시기에 올려둡니다...

 

반응형

+ Recent posts