Newsgroup: it.comp.java
Titolo: localizzazione JVM...

Salve.
Ho fatto girare la mia applicazione java sotto SUN OS 5.8.
Con due JVM diverse. Con la prima i caratteri accentati vengono scritti
correttamente, con la seconda (che è quella che devo usare) no. 
C'è un modo per localizzare la seconda?
___________________________la prima
bash-2.03$ java -version
java version "1.2.2"
Solaris VM (build Solaris_JDK_1.2.2_10, native threads, sunwjit)
___________________________la seconda
bash-2.03$  /jdk142_04/bin/java -version
java version "1.4.2_04"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2_04-b05)
Java HotSpot(TM) Client VM (build 1.4.2_04-b05, mixed mode)
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 C'č un modo per localizzare la seconda?
Cosa intendi per "localizzare"?
Se intendi modificare il locale di default (per la jvm su cui gira il
programma), vedi la funzione java.util.Locale.setDefalult().
In quel caso, valuta se č il caso di lavorare piů dettagliatamente
sull'internazionalizzazione del programma.

 C'è un modo per localizzare la seconda?
AFAIK, non e' la VM a essere localizzata: La VM si "configura" con il 
Locale del SO.
-- 
Giambo - Occhio al filtro antispam _e_ alla whitelist !

 C'è un modo per localizzare la seconda?
Cosa intendi quando scrivi: "i caratteri accentati vengono scritti"?
Scritti dove? Su file?
Da dove vengono letti i caratteri?
Te lo chiedo perche' ho avuto un problema analogo con una
applicazione che estraeva dati testuali da un db PostgreSQL
per riversarli poi su un file di testo dopo alcune
elaborazioni.
Nell'ambiente di test (Eclipse - WinXP) tutto funzionava
correttamente, ma quando facevo il deploy in produzione
(JVM Sun su Linux) le lettere accentate non venivano
scritte correttamente sul file.
La causa del malfunzionamento era la diversa configurazione
del charset sul db (LATIN1) e sul SO di produzione (UTF-8).
Problemi di questa natura li si possono risolvere almeno
in due diversi modi:
1) Modificare le impostazione del locale e del charset
    di default del SO su cui "gira" la JVM.
    Il modo di procedere dipende dal SO usato.
    Sotto linux si puo' provare ad impostare la variabile
    d'ambiente LANG nello script che lancia l'applicazione Java
    (ad esempio LANG=it_IT.LATIN1)
2) Modificare l'applicazione Java.
    Utilizzare per l'i/o di testo la classe OutputStreamWriter,
    la quale permette di impostare il charset utilizzato.
    (FileWriter usa invece quello di default del SO su cui
     gira la JVM)
Vedi a questo proposito:
http://java.sun.com/docs/books/tutorial/essential/io/filestreams.html
Ciao
Roberto

Grazie a tutti.
Avete tutti perfettamente ragione.
La cosa "strana" è che a parità di SO e di programma, l'output che esce è
differente (appunto mi riferivo alla JVM, perchè è la sola cosa che
cambia). 
Per output intendo il mio log (log4j) stampato sullo stdout, su un
FileAppender, ecc. 
Per ora ho risolto parzialmente il problema impostando l'Encoding da
codice ma lo stdOut nn funziona e ciò rimane, per me, un mistero.
Locale.setDefault(Locale.ITALIAN);
non comporta nessuna modifica.
Grazie per l'attenzione e a buon rendere!
Ciao
