2013-02-26 10 views
5

Cosa succede se un file viene generato utilizzando una codifica che il mio JRE non supporta? Esiste comunque la possibilità di estendere/personalizzare ciò che il mio JRE può gestire?Cosa succede se il mio JRE non supporta la codifica dei caratteri?

Questo potrebbe essere un terribile esempio/irrilevante (sto solo spazzolatura su set di caratteri/codifiche per la prima volta), ma io credo Linux JRE non gestisce CP-1252 (una codifica di Windows). In questo caso, come posso ottenere un'app Java in esecuzione su una macchina Linux per leggere un file codificato in CP-1252?

Anche se la distro JRE Linux fa supporta CP-1252 (facendo di questo un esempio orribile), so per certo che ci sono codifiche che non supporta. Qualunque siano queste codifiche, c'è un modo per estendere il suo standard Charactset, e se sì, come?

+0

'CP-1252' è essenzialmente lo stesso di 'ISO-8859-1' (e no, non penso che tu possa aggiungere nuove codifiche al JRE) –

+1

" Kit di sviluppo SE Java 6 di Sun per tutte le piattaforme (ambiente operativo SolarisTM, Linux e Microsoft Windows) e Java SE Runtime Environment 6 per Solaris e Linux supportano tutte le codifiche mostrate in questa pagina. " (incluso Cp1252) http://docs.oracle.com/javase/6/docs/technotes/guides/intl/encoding.doc.html –

risposta

4

La libreria di classi Java ha un meccanismo per aggiungere un nuovo supporto per set di caratteri; vedere i javadocs per CharsetProvider.

L'idea di base è che si scrive una classe che implementa l'API CharsetProvider. Quindi nel file JAR si aggiunge un file chiamato "/META-INF/services/java.nio.charset.spi.CharsetProvider" che elenca i nomi dei charset, in un formato prescritto.

(ho anche imbattuto in questo bug report http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4619777 che possa incidere se si sta cercando di aggiungere i propri Charsets in un applet di fiducia ...)


Sei a conoscenza di qualsiasi "Librerie di estensioni di Charset" che già lo fanno (e forniscono molti set di caratteri non standard)?

L'unico esempio che ho trovato è JCharset e aggiunge solo 8 set di caratteri aggiuntivi.

Se (o chiunque altro) ha bisogno di un set di caratteri che non è incluso, posso suggerire di scaricare JCharset, implementare il nuovo set di caratteri e quindi postare le modifiche all'autore come patch.

+0

Grazie a @Stepen C (+1) - molto interessante ... sapete di tutte le "librerie di estensioni Charset" che già lo fanno (e forniscono molti set di caratteri non standard)? Grazie ancora! –

1

The documentation dice:

Supporto per i nuovi set di caratteri possono essere resi disponibili tramite l'interfaccia definito nella classe CharsetProvider nel pacchetto java.nio.charset.spi.

Segui il link e leggere le istruzioni ...

+0

Grazie a @JB Nizet - guarda la mia risposta sotto la risposta di Stephen C. - Ho la stessa domanda per te! Grazie ancora! –

+0

Non ne conosco, no. Ma il JRE ha una grande lista di caratteri (vedi il commento di Alan Krueger). –

+0

Grazie ancora - per quello che vale ho trovato [JCharset] (http://www.freeutils.net/source/jcharset/) –

0

sunilkumar da vmoksha

Abilita le file XML containg UTF-8

Problemi correlati