2015-06-10 12 views
8

Sto leggendo un file di proprietà costituito da messaggio in utf 8 caratteri.Lettura dal file di proprietà contenente utf 8 caratteri

**Problem** 
The output is not in appropriate formate even though i have taken InputStream. 

file di proprietà sembra

username=LBSUSER 
[email protected] 
url=http://localhost:1010/soapfe/services/MessagingWS 
timeout=20000 
message=Spanish character are = {á é í, ó,ú ,ü, ñ, ç, å, Á, É, Í, Ó, Ú, Ü, Ñ, Ç, ¿, °, 4° año = cuarto año, €, ¢, £, ¥} 

E Sto leggendo questo file qualche cosa come questa,

Properties props = new Properties(); 
props.load(new FileInputStream("uinsoaptest.properties")); 
String username = props.getProperty("username", "test"); 
String password = props.getProperty("password", "12345"); 
String url = props.getProperty("url", "12345"); 
int timeout = Integer.parseInt(props.getProperty("timeout", "8000")); 
String messagetext = props.getProperty("message"); 
System.out.println("This is soap msg : " + messagetext); 

uscita del messaggio sopra è

enter image description here

È possibile visualizzare il messaggio nel cmd dopo {************************ TEST MESSAGGIO SOAP ******** *************** testo

Sarò obbligato a ricevere qualsiasi aiuto per leggere correttamente questo file. Posso leggere questo file con altro approccio ma cerco meno modifica coed ..

risposta

18

Utilizzare un InputStreamReader con Properties.load(Reader reader):

FileInputStream input = new FileInputStream(new File("uinsoaptest.properties")); 
props.load(new InputStreamReader(input, Charset.forName("UTF-8"))); 
+0

Questo è uno strano problema. In ubuntu uso solo 'props.load (propFile)' e funziona bene, ma in Windows ho dovuto usare il codice sopra per caricare correttamente il file prop unicode! – vakarami

+0

Dopotutto non è strano. I set di caratteri sono fortemente dipendenti dalla piattaforma. Quindi, non dovrebbe sorprendere che Ubuntu si comporta diversamente da Windows. In effetti, potrebbe essere necessario cambiare il codice ancora una volta dopo essersi trasferito alla versione successiva di Windows (o per essere precisi: un'altra versione di JVM). –

2

Usa props.load(new FileReader("uinsoaptest.properties")) invece. Per impostazione predefinita utilizza la codifica Charset.forName(System.getProperty("file.encoding")) che può essere impostata su UTF-8 con System.setProperty("file.encoding", "UTF-8") o con il parametro della riga di comando -Dfile.encoding=UTF-8.

-1

È necessario specificare la codifica UTF-8 quando si costruisce l'oggetto FileInputStream. È possibile utilizzare questo costruttore:

new FileInputStream("uinsoaptest.properties", "UTF-8"); 

Se si vuole fare una modifica al tuo JVM in modo da essere in grado di leggere i file UTF-8 per impostazione predefinita, sarà necessario cambiare le JAVA_TOOL_OPTIONS nelle opzioni JVM a qualcosa così:

-Dfile.encoding=UTF-8 
+1

Questo costruttore non esiste. –

+0

@JavaFanatic si controlli il costruttore, potrebbe essere che stavi per scrivere qualcos'altro .. – Som

+0

@Som intendevo 'FileInputStream. (String, String) '... –