2011-09-19 82 views
0

在應用程序中,我寫入一些字符串到文件中。其中一些是希臘語言。 當我使用Netbeans進行此過程時,所有工作都很好。 但是,當我嘗試運行它與我的.bat文件,相同的代碼寫入希臘文與奇怪的「 ?」字符。 很明顯,netbeans管理着一些東西,它可以寫希臘文,但我找不到它。希臘字符問題 - 沒有Netbeans

寫入示例: BufferedWriter out = new BufferedWriter(new FileWriter(FilePath)); out.write(text); out.close(); compile.bat和run.bat文件是最簡單的形式。

我能做些什麼來解決這個問題?

回答

1

您需要輸出UTF-8試試:

try { 
    BufferedWriter out = new BufferedWriter(new OutputStreamWriter(
     new FileOutputStream(FilePath), "UTF8")); 
    out.write(text); 
    out.close(); 
} catch (UnsupportedEncodingException e) { 
} catch (IOException e) { 
} 
+0

+1你更快;) – Neifen

1

嘗試與:

BufferedWriter out = new BufferedWriter(new OutputStreamWriter(yourFilePath,"UTF8")); 
out.write(text); 
out.close(); 
1

當你說你看到罰款與NetBeans的希臘字母,你很可能編寫輸出到NetBeans控制檯,這是一個捕獲標準輸出的GUI窗口。由於字體非常豐富,Windows在這些環境中渲染字符通常沒有問題。

當您說您使用.BAT文件時,您可能正在寫入Windows 控制檯cmd.exe或Powershell)。您可以搜索幫助獲取Windows控制檯編寫非ASCII文本;存在幾個解釋「代碼頁」和其他要知道的事情的來源。基本上,這要歸功於確保您的控制檯設置正確。

+0

+1解釋潛在的問題是什麼; D –

1

經過大量的搜索,我解決了這個問題。

在.bat文件,只是把:

Set JAVA_TOOL_OPTIONS= -Dfile.encoding=UTF8 
0

我有同樣的問題,這段代碼解決了這個問題:

System.setProperty("file.encoding","UTF-8"); 
Field charset = Charset.class.getDeclaredField("defaultCharset"); 
charset.setAccessible(true); 
charset.set(null,null); 

Setting the default Java character encoding?