지금 프로그램이 실제 기기로 사용할 때 영문, 숫자 까지는 전송이 잘되는데 이상하게 한글이 깨져서 전송됨니다. 이유를 모르겠습니다. 답변 부탁드립니다.
안드로이드 메세지 전송 부분
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();
}
}
}




한글 인코딩 문제는 항상 머리 아프게 하지요.
String text = et.getText().toString();
URLEncoder.encode(text, "UTF-8") 로 한번 해보세요.
서버쪽에서는 다시 풀어줘야겠지요?
URLDecoder.decode(text, "UTF-8")