2015-05-02 108 views
0

我有一個應用程序讀取文件,然後用戶用不同語言更新文件並保存。但是每當有人改變語言並保存txt文件將字母改爲符號?我想我必須將它保存爲utf-8格式。任何想法? 代碼的下一部分,我從jtable獲取數據並在用戶單擊保存按鈕時將其保存到文件中。 注意:代碼沒有問題。問題是該文件必須保存爲utf-8。如何用阿拉伯語編寫arraylist

if(buttonPressed.equals(save)){ 

     File myFile = new File("youFile.srt"); 

      try (PrintWriter writer = new PrintWriter(myFile)) { 

      for (int i =0 ; i< cModel.getRowCount(); i++) 
      { 
       sData.add(cModel.getValueAt(i, 1).toString()); 
       eData.add(cModel.getValueAt(i, 2).toString()); 
       tData.add(cModel.getValueAt(i, 3).toString()); 
       writer.println(i+1 + "\n"); 
       writer.println(sData.get(i)+" --> " + eData.get(i)); 
       writer.println(tData.get(i)); 
       writer.println("\n"); 
      } 
      }catch(FileNotFoundException ioEx){ 
       ioEx.printStackTrace(); 
      } 
+0

你確定罪魁禍首不是閱讀嗎? (你需要閱讀好編碼) – kiwixz

回答

1

PrintWriter的需要與OutputStreamWriter被杵,因爲它提供的構造函數提供的文件格式。以下是您可以執行的操作:

FileOutputStream outputStream = new FileOutputStream(myFile); 
PrintWriter writer = new PrintWriter(new OutputStreamWriter(
    outputStream, StandardCharsets.UTF_8), true) 
1

您正在使用FileWriter。最好創建一個FileOutputStream,然後使用OutputStreamWriter來編寫輸出。 OutputStreamWriter允許你指定編碼。

Writer writer = new BufferedWriter(new OutputStreamWriter(
    new FileOutputStream("youFile.srt"), "UTF-8")); 
try { 
    writer.write(aString); 
} finally { 
    writer.close(); 
}