Java 如何写入文件UTF8?

Java 如何写入文件UTF8?,java,utf-8,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

我想我需要使用

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, Không thuê
Tổng khách thuê: 03
Tổng tiền thu: 145.05$
如何将utf-8写入文件并将“3”更改为“03”?

使用

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

这样您就可以设置编码。

您需要使用此处提到的字符集名称

它将标准字符集表示为“UTF-8”,而不是“UTF8”

因此,将其更改为“UTF-8”,它就会工作

以下内容供您参考:

  • US-ASCII
    七位ASCII,又称ISO646-US,又称基本拉丁语 Unicode字符集的块
  • ISO-8859-1
    ISO拉丁字母表 第一名,又称ISO-LATIN-1
  • UTF-8
    八位UCS转换格式
  • UTF-16BE
    16位UCS转换格式,大端字节顺序
  • UTF-16LE
    16位UCS转换格式,小端字节 命令
  • UTF-16
    16位UCS转换格式,字节顺序 由可选的字节顺序标记标识
试试这个

Writer out = new BufferedWriter(new OutputStreamWriter(
    new FileOutputStream("outfilename"), "UTF-8"));
try {
    out.write(aString);
} finally {
    out.close();
}
要写入
03
(前导零)而不是
3
,可以使用

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

有关语法的详细信息,请参阅。

因为您已经知道应该使用BufferedWriter,因为它允许您选择编码,所以我看不出这里有什么问题

我只想补充一点,而不是将“UTF8”写成一个易于出错的字符串,从Java1.7开始,您可以使用这个类来获取所有标准字符集:-)


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

是的,您需要使用BufferedWriter。这可能与您所说的“then something with the line out.write(e);”的意思重复?别忘了使用UTF-8编码读取UTF-8文件。例如,如果使用windows编码,它将正确读取使用windows编码的文件。否。。。他们正在做PrintWriter out=newprintWriter(新文件名));
int myInteger = 3;
out.println("Some value: " + String.format("%02d", myInteger) );