2013-02-24 82 views
2

我想在同一個文件中寫出英文,日文和韓文。如何將Hangul(韓語)寫入文件?

這是我做的:

new File("genned/test123.txt").write("안녕하세요 hello こんにち", "utf8") 

生成的文件最終包含�壱��們┷��hello縲�%繧薙↓縺。

什麼我需要做的就是在韓國和日本,以顯示正確?

更新: 我嘗試這樣做:

File file = new File("genned/test123.txt"); 
PrintWriter out = new PrintWriter(new OutputStreamWriter(
    new FileOutputStream(file), "UTF-8")); 
out.println("日本"); 
out.close(); 

輸出功率爲:譌・譛ャ

而且在十六進制編輯器中的字節是看:E8 AD 8C EF BD A5 E8 AD 9B EF BD AC 0A

UPDATE:

當我嘗試打印字符串"\u65E5\u672C",該文件正確地以字符串結尾

+0

您確定該文件沒有包含正確的字符嗎?您如何檢查? – Ingo 2013-02-24 22:48:08

+2

如何檢查文件?文本編輯器?如果它比較了utf8代碼點是正確的字符正在寫嗎?我懷疑編輯器正在使用的字體可能無法正確顯示字符 – Femaref 2013-02-24 22:48:11

+0

文件類是你的自定義類嗎? java.io.File不包含寫入方法。 http://docs.oracle.com/javase/6/docs/api/java/io/File.html – DominikM 2013-02-24 22:49:55

回答

6

檢查在編輯java編譯器的編碼是相同的「UTF-8」。

File file = new File("genned/test123.txt"); 
PrintWriter out = new PrintWriter(new OutputStreamWriter(
    new FileOutputStream(file), "UTF-8")); 
out.println("안하세요 hello こんにち"); 
out.close(); 

您更新後:

檢查來源是UTF-8。使用例如JEdit免費程序員的編輯器與許多編碼。並與javac -encoding UTF-8 ...編譯。

我的猜測是,編輯是好的(因爲它代表了日本和韓國,這樣可能是編譯器仍然使用默認的平臺的操作系統編碼。

如果使用eclipse來看看Windows /首選項/常規/工作區/文本文件編碼 和項目設置