subscribe: Posts | Comments

Tomcat e le lettere accentate su file

3 commenti

Le lettere accentate ed il web meritano un intero libro. O meglio, non le lettere accentate ma gli schemi di codifica Unicode, UTF-8, ISO. Un caso particolare è però quello di far “servire” a Tomcat un file (ad esempio un HTML) che si trova su disco. Se il fiel è stato creato da Windows ed il Tomcat gira su Windows in linea di massima non ci sono problemi. Ma se il file viene trasferito su Linux, nelle distribuzioni con meno di tre anni, tutto si spacca.In particolare si rompe (con ottime probabilità) la visualizzazione delle lettere accentate. Perché? La risposta è semplicissima: le distribuzioni Linux sono per la maggior parte configurate con la lingua en_US.UTF-8 o per la versione localizzata, it_IT.UTF-8.

Questa configurazione indica alla Java Virtual Machine (JVM) che i file su disco, quando sono di testo, vanno letti con lo schema UTF-8. Ma se i file sono stati generati su Windows, con buona probabilità non sarannoUTF-8 e le lettere accentate appariranno come punti di domanda.

Come si risolve il problema? O si salvano i file in formato UTF-8 (lo fanno Scite, Ultraedit e anche DreamWeaver) o si deve dire alla JVM di utilizzare come codifica di default la ISO8859-1 e non l’UTF-8. Il modo più semplice per farlo è aggiungere nella cartella bin di Tomcat il file setenv.sh con all’interno:

export LANG=en_US

Il file setenv.sh dovrebbe essere sempre utilizzato per impostare i parametri di Tomcat, senza modificate il catalina.sh o gli altri script di shell. Per Windows, basta creare il file setenv.bat. Un esempio è l’impostazione della memoria: se vogliamo dare a tomcat un giga di ram, nel setenv.sh scriveremo:

JAVA_OPTS=-Xmx1024m

Buona personalizzazione e non toccate più il catalina.sh!

Ecco altri articoli:

MySql e le tabelle in UTF-8
Costruendo una web application Java con mysql, avevamo installato il database con il charset UTF-8 per...
Computer lento: come ottimizzare Windows
Capita a tutti, non preoccupatevi: dopo un po' di mesi che si utilizza Windows, il computer per quanto...
Come ripulire il PC dalle cose inutili
Quante volte vi anno detto che Windows (in particolare Windows XP) con il tempo diventa lento? E che...
Creare PDF con Word o altri programmi Windows
Sono sicuro che almeno uno dei miei lettori, prima o poi, ha dovuto (o desiderato) creare un PDF (Portable...
  1. finalmente ho risolto questo problema che mi perseguitava da una settimana! grazie

  2. Satollo scrive:

    Cavolo, neanche mi ricordavo di aver scritto questa cosa! Sono contento che sia stata utile!
    E pensa cheultimamente lavorando in un sito croato (traspostato da un sistema all’altro) non si riuscivano a visualizzare alcuni caratteri diacritici (sono delle consonanti con accenti sopra). Bene, l’unica soluzione è forzare il charset a CP1252… oppure passare completamente in UTF-8.

    Il mio consiglio comunque è lavorare in UTF-8 ma stando attenti al GET e POST dell’HTTP: è necessario inserire un filtro che sistemi le cose prima dell’esecuzione delle JSP.

  3. gennaro scrive:

    ciao ti puoi spiegare meglio con l’ultima frase? ho un form in jsp e usando il post non mi vengono visualizzate le lettere accentate pur avendo specificato con i meta e nella definizione dell’xml di usare la codifica utf-8.

Qualcosadadire?