2016-10-27 5 views
3

Ich versuche, eine Datei zu lesen, die Urdu-Daten haben. Wenn ich die Datei in Notepad ++ anzeigen, hat es Daten in Urdu. Aber wenn ich es in Eclipse ansehe, dann zeigt es irgendeine Art von Kodierung (vielleicht hat es einen Standard).Urdu-Datei lesen in Java

Original-Urdu Daten (Notepad ++):

"10","کراچی میں ٹماٹر کی قیمت میں کمی،25روپے فی کلو ہوگیا","Entertainment" 

in Eclipse:

"10","کراچی میں ٹماٹر کی قیمت میں کمی،25روپے �ی کلو �وگیا","Entertainment" 

Nun ist dies standardmäßig seltsam einige Codierung geschehen ist. Gibt es eine Möglichkeit, dass ich Daten in der ursprünglichen Form erhalten kann, so dass, wenn ich etwas Verarbeitung darauf mache und es in Datei schreibe, ich verarbeitete Daten in der ursprünglichen Urdu-Form statt jeder Kodierung will.

Hier ist der Code.

public class DataProcessing { 

    /** 
    * @param args 
    */ 
    public static void main(String[] args) { 
     // TODO Auto-generated method stub 
     DataProcessing dataProcessingObj = new DataProcessing(); 
     dataProcessingObj.readDataFromFile("small_dataset.txt"); 
    } 

    private void readDataFromFile(String fileName) 
    { 
     BufferedReader br = null; 
     try{ 
      br = new BufferedReader(new FileReader(fileName)); 
      String line = ""; 
      while((line = br.readLine()) != null) 
      { 
       System.out.println(line); 
      } 
     } 
     catch(Exception ex){ 
      ex.printStackTrace(); 
     } 
    } 
} 

Wenn Sie mir helfen können, werde ich Ihnen dankbar sein.

+1

In welcher Zeichencodierung wird die Datei gespeichert? Wie liest du den Inhalt der Datei und zeige ihn in deiner Bewerbung an? – Jesper

+0

Code wird in Frage gestellt. –

+0

@Jesper Wie kann ich wissen, in welcher Zeichenkodierung meine Datei gespeichert ist? –

Antwort

1

Verwenden Sie FileReader/FileWriter nicht als alte Dienstprogrammklassen, die die standardmäßige Plattformcodierung verwenden. Sie möchten die Codierung angeben, entweder UTF-8 oder Windows-1256. (Notepad ++ die richtige Codierung zeigen.)

private void readDataFromFile(String fileName) 
{ 
    Path path = Paths.get(fileName); 
    Charset charset = StandardCharsets.UTF_8; 
    try (BufferedReader br = Files.newBufferedReader(path, charset)) { 
     String line; 
     while((line = br.readLine()) != null) 
     { 
      System.out.println(line); 
     } 
    } 
    catch(Exception ex) { 
     ex.printStackTrace(); 
    } 
} 

Oder in Java 8:

private void readDataFromFile(String fileName) throws IOException 
{ 
    Path path = Paths.get(fileName); 
    Charset charset = Charset.forName("Window-1256"); 
    Files.lines(path, charset).forEach(System.out::println); 
} 
+0

Ich kann meinen ursprünglichen Urdu-Sprachtext nicht abrufen. Es zeigt mir folgende Ergebnisse, wenn ich es drucke. "10", "????? ????? ?? ???? ??? ???? 25 ???? ?? ?????", "Unterhaltung " –

+0

System.out kann dann die Kodierung nicht anzeigen. Schreiben Sie stattdessen mit UTF-8 in die Datei –