Originariamente inviato da valia
indubbiamente è un problema legato a charset e code page sui vari computer locali. Ti devi porre tu il problema di come un carattere viene codificato quando parli di un carattere particolare come l'alfa o il beta.
Qui trovi i caratteri direttamente supportati da java
http://download.oracle.com/javase/6/...t/Charset.html
per altri tipi di caratteri devi essere sicuro di avere la mappatura su ogni macchina che esegue.
Per il futuro ti consiglio di evitare caratteri speciali (puoi scrivere alfa, si capisce comunque quello a cui ti riferisci) oppure ricordarti di utilizzare il charset in modo corretto
per la questione di alfa o beta è impossibile far quello che dici, dato che è un'applicazione che riguarda trascrizioni di testi antichi per filologi 
comunque non potevo avere accesso alle macchine linux per controllare la configurazione di tomcat, dato che io ho solo accesso come utente semplice.
comunque alla fine ho risolto utilizzando questa funzione che ho trovato online:
codice:
private static String unescape(String s) { StringBuffer sbuf = new StringBuffer () ; int l = s.length() ; int ch = -1 ; int b, sumb = 0; for (int i = 0, more = -1 ; i < l ; i++) { /* Get next byte b from URL segment s */ switch (ch = s.charAt(i)) { case '%': ch = s.charAt (++i) ; int hb = (Character.isDigit ((char) ch) ? ch - '0' : 10+Character.toLowerCase((char) ch) - 'a') & 0xF ; ch = s.charAt (++i) ; int lb = (Character.isDigit ((char) ch) ? ch - '0' : 10+Character.toLowerCase ((char) ch)-'a') & 0xF ; b = (hb << 4) | lb ; break ; case '+': b = ' ' ; break ; default: b = ch ; } /* Decode byte b as UTF-8, sumb collects incomplete chars */ if ((b & 0xc0) == 0x80) { // 10xxxxxx (continuation byte) sumb = (sumb << 6) | (b & 0x3f) ; // Add 6 bits to sumb if (--more == 0) sbuf.append((char) sumb) ; // Add char to sbuf } else if ((b & 0x80) == 0x00) { // 0xxxxxxx (yields 7 bits) sbuf.append((char) b) ; // Store in sbuf } else if ((b & 0xe0) == 0xc0) { // 110xxxxx (yields 5 bits) sumb = b & 0x1f; more = 1; // Expect 1 more byte } else if ((b & 0xf0) == 0xe0) { // 1110xxxx (yields 4 bits) sumb = b & 0x0f; more = 2; // Expect 2 more bytes } else if ((b & 0xf8) == 0xf0) { // 11110xxx (yields 3 bits) sumb = b & 0x07; more = 3; // Expect 3 more bytes } else if ((b & 0xfc) == 0xf8) { // 111110xx (yields 2 bits) sumb = b & 0x03; more = 4; // Expect 4 more bytes } else /*if ((b & 0xfe) == 0xfc)*/ { // 1111110x (yields 1 bit) sumb = b & 0x01; more = 5; // Expect 5 more bytes } /* We don't test if the UTF-8 encoding is well-formed */ } return sbuf.toString() ; }
grazie comunque per la risposta.
ciao