지금 프로그램이 실제 기기로 사용할 때 영문, 숫자 까지는 전송이 잘되는데 이상하게 한글이 깨져서 전송됨니다. 이유를 모르겠습니다. 답변 부탁드립니다.

안드로이드 메세지 전송 부분
btn.setOnClickListener(new OnClickListener() {
   public void onClick(View v) {
    if(et.getText().toString() != null || !et.getText().toString().equals("")){
     Log.v("onClick", "================");
     //TCPclient tp = new TCPclient(et.getText().toString());
     //tp.run();
     try{
      PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())),true);
      out.println(et.getText().toString());
      
      BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
      return_msg = in.readLine();
     }
     catch(Exception e){
          Toast.makeText(TCPsocketTest.this, "data not sand", Toast.LENGTH_SHORT).show();         
     }
     
     Toast t = Toast.makeText(getApplicationContext(), return_msg, Toast.LENGTH_LONG);
     t.show();
     tv.setText(return_msg);
    }
   }
  });

서버 데이터 수신 부분
public void run() {
  try{
   BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
   while(true){
    String str = reader.readLine();
    System.out.println("클라이언트 MSG : " + str);
    if(str == null)
     break;
    writer.println(str);
    writer.flush();
   }
  }
  catch(Exception e){
   e.getMessage();
  }
  finally{
   try{
    socket.close();
   }
   catch(Exception e){
    e.getMessage();
   }
  }
 }