2015-06-10 9 views
8

Ich lese eine Eigenschaftendatei, die aus Nachricht in utf 8 Zeichensatz besteht.Lesen von Eigenschaftendatei mit utf 8 Zeichen

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

Objektdatei sieht wie

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

Und ich lese diese Datei soetwas wie diese,

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); 

Ausgabe der obigen Meldung ist

enter image description here

Sie können die Nachricht in der cmd nach sehen {************************ SOAP MESSAGE TEST ******** ***************} Text

Ich werde verpflichtet, wenn ich irgendeine Hilfe bekomme, die diese Datei richtig liest. Ich kann diese Datei mit anderem Ansatz lesen, aber ich bin auf der Suche nach weniger Coed Modifikation ..

Antwort

18

Verwenden Sie ein InputStreamReader mit Properties.load(Reader reader):

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

Das ist ein seltsames Problem. In Ubuntu verwende ich einfach 'props.load (propFile)' und es funktioniert gut, aber in Windows musste ich obigen Code verwenden, um die Unicode-Prop-Datei korrekt zu laden! – vakarami

+0

Es ist schließlich nicht so merkwürdig. Zeichensätze sind stark plattformabhängig. Es sollte also nicht überraschen, dass sich Ubuntu anders verhält als Windows. Möglicherweise müssen Sie Ihren Code nach dem Wechsel zur nächsten Windows-Version noch einmal ändern (oder genauer: eine andere JVM-Version). –

2

Verwenden props.load(new FileReader("uinsoaptest.properties")) statt. Standardmäßig wird die Codierung Charset.forName(System.getProperty("file.encoding")) verwendet, die mit System.setProperty("file.encoding", "UTF-8") oder mit dem Befehlszeilenparameter -Dfile.encoding=UTF-8 auf UTF-8 eingestellt werden kann.

-1

Sie sollten die UTF-8-Codierung angeben, wenn Sie Ihr FileInputStream-Objekt erstellen. Sie können diesen Konstruktor verwenden:

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

Wenn Sie eine Änderung an Ihrer JVM machen wollen, um der Lage sein, UTF-8-Dateien standardmäßig zu lesen, werden Sie die JAVA_TOOL_OPTIONS in Ihrer JVM-Optionen, um etwas ändern müssen wie folgt:

-Dfile.encoding=UTF-8 
+1

Dieser Konstruktor existiert nicht. –

+0

@JavaFanatic ja, überprüfen Sie den Konstruktor, vielleicht waren Sie im Begriff, etwas anderes zu schreiben .. – Som

+0

@Som ich meinte 'FileInputStream. (String, String) '... –