PDA

View Full Version : Java ed Encoding


Xylorth
19-06-2007, 14:53
Ciao a tutti,
Sono un novizio di java, ma mi occorre una mano, anzi una manona da voi esperti :D .
Vi spiego velocemente il problema:
Ho un programma scritto in java, che deve leggere il contenuto di una mail, che riconosce tramite per esempio l'oggetto.
Ok, fatta questa brevissima spiegazione, ho il seguente problema.
Faccio stampare a video l'errore e mi da questo errore:
java.io.IOException: Unknown encoding: 8bits

Nel sorgente della mail dice queste cose che credo potrebbero interessare:
Content-Transfer-Encoding: 8bits
Content-Type: text/plain; charset="ISO-8859-1"
La mia domanda è quindi, è possibile che sia la codifica del carattera che non vada bene?
C'è una soluzione?
Io ho provato a inserire:
BufferedReader reader = new BufferedReader(new InputStreamReader(m.getInputStream(),"ISO8859_1"));
e anche UTF-8 o UTF8, ma il problema non si risolve, o meglio l'errore è sempre lo stesso!
Potete aiutarmi
Grazie mille!
Stefano

PGI-Bis
19-06-2007, 15:19
Prova con

"ISO-8859-1"

al posto di

"ISO8859_1"

Xylorth
19-06-2007, 15:30
Avevo già provato e non andava.. Cmq provo appena possibile :)
Confermi che è un problema di codifica?

PGI-Bis
19-06-2007, 15:36
Non confermo nè smentisco.

Credo che il problema stia nel fatto che l'oggetto che usi per leggere prende come codifica la stringa "8 bits" mentre invece dovrebbe prendere la "ISO-8859-1" della linea successiva. Ma navigo a vista.

Xylorth
19-06-2007, 15:49
Ti ringrazio, potresti spiegarmi in parole poverissime cosa significa quello che hai detto?
Cioè non capisco xkè non prende quella codifica!
Grazie mille
Stefano

PGI-Bis
19-06-2007, 15:56
L'eccezione dice:

Unknown encoding: 8bits

Significa che un flusso che legge del testo ha ricevuto come impostazione di codifica la stringa "8bits". Questa stringa non corrisponde ad alcuna codifica nota tra quelle presenti nella piattaforma Java Standard.

Da dove arriva questa stringa "8bits". Se guardiamo il testo che hai allegato:

Content-Transfer-Encoding: 8bits
Content-Type: text/plain; charset="ISO-8859-1"

Si nota come la stringa in questione sia il valore del parametro "Content-Transfer-Encoding".

Il meccanismo che tenta di leggere quel file con tutta probabilità anzichè creare un reader con il charset "ISO-8859-1" crea un reader con il charset "8bits" che però non è un identificatore riconosciuto.

Cos'è questo "meccanismo"? Non lo so. Comunque il problema non è nel tuo reader. Prova a controllare la traccia completa dell'eccezione. Dovrebbe dirti chi sia a rilasciare effettivamente quell'eccezione.

Xylorth
19-06-2007, 16:13
Ti ringrazio sei stato chiaro e conciso!!
Un ultima cosina
Prova a controllare la traccia completa dell'eccezione. Dovrebbe dirti chi sia a rilasciare effettivamente quell'eccezione.
Intendi il sorgente della mail?
Grazie Ancora!

PGI-Bis
19-06-2007, 19:14
Intendo proprio la traccia dell'eccezione. Questo:

java.io.IOException: Unknown encoding: 8bits

è il messaggio dell'eccezione. Dovrebbe essere seguito da un lungo elenco, più o meno incomprensibile, di lunghi nomi.

Ognuno di quei nomi corrisponde al nome di un metodo di una classe Java. Là dentro dovresti scovare quale sia il primo metodo che ti suona familiare e da lì iniziare la caccia al problema.

Jo3
19-06-2007, 19:28
Ciao a tutti,
Sono un novizio di java, ma mi occorre una mano, anzi una manona da voi esperti :D .
Vi spiego velocemente il problema:
Ho un programma scritto in java, che deve leggere il contenuto di una mail, che riconosce tramite per esempio l'oggetto.
Ok, fatta questa brevissima spiegazione, ho il seguente problema.
Faccio stampare a video l'errore e mi da questo errore:
java.io.IOException: Unknown encoding: 8bits

Nel sorgente della mail dice queste cose che credo potrebbero interessare:
Content-Transfer-Encoding: 8bits
Content-Type: text/plain; charset="ISO-8859-1"
La mia domanda è quindi, è possibile che sia la codifica del carattera che non vada bene?
C'è una soluzione?
Io ho provato a inserire:
BufferedReader reader = new BufferedReader(new InputStreamReader(m.getInputStream(),"ISO8859_1"));
e anche UTF-8 o UTF8, ma il problema non si risolve, o meglio l'errore è sempre lo stesso!
Potete aiutarmi
Grazie mille!
Stefano

Perdona l'intrusione : stai usando JavaMail per leggere il MIME della mail?

Xylorth
20-06-2007, 09:59
già qualcosa di molto simile