如何写文件UTF8?

时间:2013-10-19 13:38:37

标签: java utf-8

我想我需要使用

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”?

5 个答案:

答案 0 :(得分:3)

要写03(前导零)而不是3,您可以使用

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

有关语法的详细信息,请参阅String.format(...) documentation

答案 1 :(得分:0)

使用,

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

这样你可以设置编码。

答案 2 :(得分:0)

您需要使用此link

中提到的字符集名称

它将标准字符集称为“UTF-8”而不是“UTF8”。

因此将其更改为“UTF-8”并且它将起作用。

以下供您参考:

  • US-ASCII
                                              七位ASCII,a.k.a。ISO646-US,a.k.a。基本拉丁语 Unicode字符集的块
  • ISO-8859-1
    ISO拉丁字母 第1号,a.k.a。ISO-LATIN-1
  • UTF-8
    八位UCS转换格式
  • UTF-16BE
    16位UCS转换格式,大端字节顺序
  • UTF-16LE
    16位UCS转换格式,little-endian字节 订单
  • UTF-16
    16位UCS转换格式,字节顺序 由可选的字节顺序标记
  • 标识

答案 3 :(得分:0)

试试这个

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

答案 4 :(得分:0)

既然你已经知道你应该使用BufferedWriter,因为它让你选择了编码,我不知道这里有什么问题。

我只想补充一点,而不是将“UTF8”写成一个容易出错的字符串,从Java 1.7开始,可以使用类StandardCharsets来获取所有标准字符集: )

如果Java 1.7不是一个选项,您也可以使用Guava的Charsets类。