2017-03-05 73 views
0
File file = new File("file.txt"); 
BufferedWriter output=new BufferedWriter(new Filewriter(file)); 

output.write("data fetched from database"); 

我從映射到相應的DTO對象的數據庫獲取數據,並使用DTO對象的getters將其寫入文件。無法寫入拉丁大寫使用Java將字母轉換爲文件

它的正常工作的正常數據,但未能爲如下數據:

字在DB是:克恩頓州。

當我在記事本中打開Windows中的文件時,它是正確的。

當我在vi或vim編輯器中打開時,在KÄ之後,它將進入一個新行並寫入其餘行。

當我在Windows中打開wordpad或csv文件時,它顯示爲:KÃ「RNTEN。

+1

看起來像一個編碼的問題 – fragmentedreality

+0

[從控制檯無法寫入德國的 '變音'(AOU)與Java文本文件]中可能的複製(HTTP:/ /stackoverflow.com/questions/3862320/failing-to-write-german-umlauts-%c3%a4%c3%b6%c3%bc-from-console-to-text-file-with-java) –

+0

是的,它是。 現在,我改變了膩子終端上的翻譯設置後,它工作正常。 – avinashsv

回答

0

效果看起來像你得到的數據爲UTF-8,但讀取它作爲ISO-8859。

嘗試

Writer out = new BufferedWriter(new OutputStreamWriter(
      new FileOutputStream("file.txt"), "ISO-8859-1")); 
try { 
    out.write("data fetched from database:" + yourFetchedData); 
} finally { 
    out.close(); 
} 

參見How to write a UTF-8 file with Java?

+0

我甚至嘗試過OutStreamWriter,但沒有運氣。 後來,我發現它不是文件的問題。我改變了putty的終端設置,現在,數據看起來很乾淨。 在終端上,從下拉列表中更改設置 - >翻譯 - >並選擇UTF-8。 – avinashsv

相關問題