2013-10-19 51 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类。