encoding java da Windows a Linux

Sto migrando tutti i miei progetti java da Windows a Linux. In questi giorni devo fare una modifica su un paio di classi e questa è l'occasione buona per riconfigurare l'ambiente di sviluppo migrandolo da windows a linux.
Installare Eclipse ed Exadel è un giochetto da ragazzi, così come riconfigurare i vari build path necessari ai progetti.
Al primo tentativo di build con Ant però mi sono trovato con una lista infinita di warninigs. Ok, il build è andato a buon fine, ma quei messaggi sono un pò fastidiosi.
il messaggio dice: "warning: unmappable character for encoding UTF8".
Urca! ma che scherziamo?? Io parlo l'iso-8859-15, mica il povero e ridotto utf8 :)
Come mai quando compilavo su Windows questo messaggio non compariva?

Google-izzo il problema e capisco che il problema dipende dall sequenza di byte specifici del set di caratteri iso8859-1 con cui il file è stato scritto e che non trovano una corrispondenza con i caratteri utf8 del nuovo sistema (anche se i pacchetti iso-8859.1 sono stati installati). Ad esempio, i caratteri accentati vengono trasformati con un punto di domanda su sfondo scuro.
La soluzione è molto semplice: specificare ad Ant, anzi, per essere precisi al Javac, l'encoding di riferimento. Nel build.xml si deve indicare l'attributo encoding="iso8859-1". Il mio è:

<javac srcdir="${src.dir}"
destdir="${build.dir}"
debug="on"
deprecation="on"
target="1.5"
encoding="iso8859-1">
<include name="**/*.java">
<classpath refid="project.class.path">
</javac>


Per i curiosi: target="1.5" mi serve per un problema di incompatibilità tra java 1.5 e 1.6...ed essendo il server di produzione ancora 1.5 (magari lo upgrado...) devo dire anche qui a Javac come comportarsi.

1 commento:

Sofia ha detto...

Grazie al tuo post ho risolto un problema di compilazione con ant.
Ho aggiungendo encoding="iso8859-1" ed adesso tutto ok.

Ciao :)