Problema ao converter char[] para String?

Olá pessoal, a questão é a seguinte:
Tenho uma estrutura cliente-servidor que se comunicam através de sockets, o problema tá acontecendo quando na mensagem apresentam alguns caracteres especiais.

Exemplo:
(Lado cliente)

s = new Socket(endereco, porta);
in = new DataInputStream(s.getInputStream());
out = new DataOutputStream(s.getOutputStream());
//Enviando o tamanho do que vou mandar
out.writeInt(parametros.length());
//O que eu quero mandar
out.write("Algum texto antes... +=_;ˆ*()[]");

(Lado Servidor)

DataInputStream in = 
                       new DataInputStream(connection.getInputStream());
int tamanho = in.readInt();
DataInputStream inFromClient = 
                      new DataInputStream(connection.getInputStream());
byte[] bytes = new byte[tamanho];				
inFromClient = new DataInputStream(connection.getInputStream());
inFromClient.readFully(bytes);
String mensagem = new String(bytes, "UTF-8");
System.out.println(mensagem);

//Saída: +=_;�*()[]

Essa é a questão, quando há alguns caracteres especiais, a conversão me retorna coisas do tipo onde tem exemplificado acima. Alguém tem alguma ideia do que pode causar isso ?

Coloque no cliente o padrão UTF-8 também pois ele pode estar interpretando de outra forma.

Resolvi utilizando outro método de escrita. Valeu pela ajuda.