2013-10-19 53 views
1

我想我需要使用如何寫文件UTF8?

BufferedWriter out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(fileName), "UTF8")); 

但是,當我在我的代碼更改的BufferedWriter,那麼什麼是錯與線out.write(e);

我的代碼:

public void writeToFile(String fileName, List<ThongtinKhachThue> resultttkt){ 
     System.out.println("Begin...."); 
     try { 
      PrintWriter out = new PrintWriter(new File(fileName)); 
      out.println("//thue.txt"); 
      for(ThongtinKhachThue e : resultttkt){ 
        out.println(e);     
      } 
      out.println("Tổng khách thuê phòng: "+TongKhachThue()); 
      out.println("Tổng tiền thu: "+TongTienThuDuoc()+"$"); 
      out.flush(); 
      out.close(); 
      System.out.println("End..."); 
     } catch (FileNotFoundException e) { 
      System.err.println(e.getMessage()); 
      e.printStackTrace(); 
     } 
    } 

它顯示了文件:

//thue.txt 
K1, A1002, 47.05$ 
K2, A0003, 67.0$ 
K3, A1001, 31.0$ 
K4, null, 0.0$ 
T?ng khách thuê ph?ng: 3 
T?ng ti?n thu: 145.05$ 

什麼,我想讓它顯示的是:

//thue.txt 
K1, A1002, 47.05$ 
K2, A0003, 67.0$ 
K3, A1001, 31.0$ 
K4, Không thuê 
Tổng khách thuê: 03 
Tổng tiền thu: 145.05$ 

我怎麼能寫UTF-8文件並將「3」更改爲「03」?

+0

是的,你需要使用BufferedWriter。 – Kayaman

+0

這是可能的重複http://stackoverflow.com/questions/1001540/how-to-write-a-utf-8-file-with-java/1001562#1001562 –

+0

你是什麼意思「然後有些事情是錯的與線out.write(e);「? –

回答

0

使用,

BufferedWriter out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(path),"UTF-8")); 

這樣你可以設置編碼。

+0

不......他們正在做PrintWriter out = new PrintWriter(new File(fileName)); – john01dav

0

您需要使用這個link

提到它說的標準字符集爲「UTF8」,而不是「UTF-8」字符集的名字。

因此,將其更改爲「UTF-8」,它將起作用。

下面,供大家參考:

  • US-ASCII
    七位ASCII,又名ISO646-US,又名Unicode字符的基本拉丁語 塊設置
  • ISO-8859 -1
    ISO Latin Alphabet No.1,akaISO-LATIN-1
  • UTF-8
    八位UCS轉換格式
  • UTF-16BE
    十六位UCS轉換格式,大尾數字節順序
  • UTF-16LE
    十六位UCS轉換格式,小尾數字節順序
  • UTF-16
    十六位UCS轉換格式,通過一個可選的字節順序標記標識的字節順序
+2

Nope:http://ideone.com/jKyHsT。 'UTF8'是'UTF-8'的別名 – millimoose

0

試試這個

Writer out = new BufferedWriter(new OutputStreamWriter(
    new FileOutputStream("outfilename"), "UTF-8")); 
try { 
    out.write(aString); 
} finally { 
    out.close(); 
} 
3

要寫入03(前導零),而不是3可以使用

int myInteger = 3; 
out.println("Some value: " + String.format("%02d", myInteger)); 

有關語法的詳細信息,請參閱String.format(...) documentation

0

既然你已經知道你應該使用BufferedWriter,因爲它讓我們選擇了編碼,我沒有看到這裏有什麼問題。

我只想補充一點,而不是寫「UTF8」作爲一個字符串,它是很容易出錯,你可以使用,如Java 1.7中,類StandardCharsets得到的,好了,所有的標準字符集:-)

如果Java 1.7不是您的選擇,您還可以使用Guava的Charsets類。