2010-04-20 24 views
7

Io sono la programmazione in JavaDeterminazione set di caratteri predefinito di piattaforma in Java

Ho il codice come:

byte[] b = test.getBytes(); 

nell'API si precisa che, se non si specifica codifica dei caratteri ci vuole il codifica dei caratteri di piattaforma predefinita.

Cosa si intende per "codifica caratteri di piattaforma predefinita"?

Significa la codifica Java o la codifica del sistema operativo?

Se significa codificare il sistema operativo, come posso controllare la codifica dei caratteri predefinita di Windows e Linux? È comunque possibile ottenere la codifica dei caratteri di default usando la riga di comando?

+0

È necessario chiarire esattamente cosa intendi. Inizia con il motivo per cui vuoi le informazioni. –

+0

Se non riesci a trovare le domande che hai chiesto in precedenza, fai clic in qualsiasi punto in cui il tuo nome appare come un link come qui: [Anand] (http://stackoverflow.com/users/226906/anand) e nella barra in alto. Puoi trovare le domande lì, hai praticamente domande non accettate (nota: le domande sono distribuite sulle pagine!). Rivedile ancora e vota/accetta alcuni. – BalusC

risposta

3

Significa che la codifica dei caratteri di default della JVM che si sta eseguendo su,

Per controllare il valore di default codifica è possibile effettuare le seguenti operazioni:

System.getProperty("file.encoding"); 

che restituirà la codifica di default (e quello usato da getBytes() sopra).

+2

... ma non preoccuparti. Ci sono pochissimi validi motivi per usare 'String.getBytes()', e quando lo si usa si dovrebbe sempre specificare una codifica piuttosto che fare affidamento sull'impostazione predefinita. Lo stesso vale per i costruttori 'new String (byte [])'. –

28

La proprietà di sistema file.encoding è specifica del fornitore JVM. In questo caso specifico è applicabile solo su Sun JVM e potrebbe non funzionare su JVM di altri fornitori rispetto a Sun.

Piuttosto utilizzare l'API Java SE fornita Charset#defaultCharset().

Charset defaultCharset = Charset.defaultCharset(); 
+2

Questo mi ha appena morso. Sto eseguendo il debug di un progetto eclipse con la codifica predefinita delle risorse impostata su UTF-8. Sembra che eclipse configuri automaticamente la codifica JVM delle nuove configurazioni run (lauch) per essere uguale alla codifica della risorsa del progetto (nel mio caso UTF-8). Ma la codifica del mio sistema operativo di sviluppo (Win7) è Cp1252. Quindi, finché controllo il venditore JVM, userò la proprietà di sistema "file.encoding" ed eviterò Charset.defaultCharset(). Ad ogni modo, uso jdk 1.7.0_17 (32 bit). – Zalumon

+0

Prendo la conclusione del mio commento precedente. Ho appena notato che "file.encoding" è anche UTF-8 nello scenario che ho descritto sopra. Ora non so affatto come capire la vera codifica del sistema operativo. – Zalumon

+0

BalusC! Grazie per tutto il tuo duro lavoro in questa comunità. Sei il mio eroe personale. Ad ogni modo, hai un URL di documentazione ufficiale che descrive la proprietà 'file.encoding'? –

Problemi correlati