Prise InputStream et UTF-8

Première chose d'abord désolé pour mon mauvais anglais, et pour ma question de noob.
Je suis en train de faire un chat avec Java.
Tout fonctionne bien, sauf que les caractères spéciaux ne fonctionne pas.
Je pense que c'est un problème d'encodage, car dans mon flux de Sortie-je encoder la chaîne en UTF-8 comme ceci:

  protected void send(String msg) {

        try {
          msg+="\r\n";            
          OutputStream outStream = socket.getOutputStream();              
          outStream.write(msg.getBytes("UTF-8"));
          System.out.println(msg.getBytes("UTF-8"));
          outStream.flush();
        }
        catch(IOException ex) {
          ex.printStackTrace();
        }
      }

Mais dans ma méthode de réception je n'ai pas trouver un moyen de le faire:

public String receive() throws IOException {
String line = "";
InputStream inStream = socket.getInputStream();    
int read = inStream.read();
while (read!=10 && read > -1) {
line+=String.valueOf((char)read);
read = inStream.read();
}
if (read==-1) return null;
line+=String.valueOf((char)read);       
return line; 
}

Si il existe un moyen rapide de préciser que les octets lus par le tampon sont encodés en UTF-8?

EDIT:
Bon j'ai essayé avec le BufferedReader comme ceci:

 public String receive() throws IOException {
String line = "";           
in = new BufferedReader(new InputStreamReader(socket.getInputStream(), "UTF-8"));           
String readLine = "";   
while ((readLine = in.readLine()) != null) {
line+=readLine;
}
System.out.println("Line:"+line);
return line;
}

Mais ça ne fonctionne pas. Il semble que le support n'est pas recevoir quoi que ce soit.

InformationsquelleAutor Davide Rain | 2014-06-24