Buenas, 
 
Normalmente nunca paso datos de un formulario directamente por GET, pero cuando no he tenido otra opcion siempre me ha functionado perfectamente haciendo URLencoding al envio y URLdecoding en la recepcion.  
http://www.baeldung.com/java-url-encoding-decoding  
Aprovecho para recomiendarte escribir un test unitario para validar el tratamiento. 
En 
pseudocodigo Java:   
Código Java:
Ver original- String-  stringToTest  = "cadena con caracteres extranos";
 
- String-  encodedString  = URLEncoder- . encode(- stringToTest , StandardCharsets. UTF_8- . toString());
 
- String-  decodedString  = URLDecoder- . decode(- encodedString , StandardCharsets. UTF_8- . toString());
 
- assertEquals(stringToTest, decodedString); 
Un saludo