FileOutputStream将编码设置为utf-8

时间:2015-12-14 14:49:21

标签: java utf-8

想要将文件设置为utf-8

FileOutputStream只需要两个参数

我的代码是

 PrintWriter kitaba1 = null;

    try {
       kitaba1 = new PrintWriter(new FileOutputStream(new File(ismmilaf), true ));

    } catch (FileNotFoundException ex) {
        ex.printStackTrace();
    }

    //kitaba1.println(moarif1);
    kitaba1.close();

4 个答案:

答案 0 :(得分:6)

您需要使用OutputStreamWriter,以便指定输出字符集。如果需要打印语义,可以将其包装在PrintWriterBufferedWriter中:

PrintWriter kitaba1 = null;

try {
   kitaba1 = new PrintWriter(new OutputStreamWriter(new FileOutputStream(new File(ismmilaf), true), StandardCharsets.UTF_8));

} catch (FileNotFoundException ex) {
    ex.printStackTrace();
}

//kitaba1.println(moarif1);
kitaba1.close();

BufferedWriter kitaba1 = null;

try {
   kitaba1 = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(new File(ismmilaf), true), StandardCharsets.UTF_8));

} catch (FileNotFoundException ex) {
    ex.printStackTrace();
}

//kitaba1.write(moarif1);
//kitaba1.newLine()
kitaba1.close();

答案 1 :(得分:2)

FileOutputStream旨在用于写入二进制数据。如果要编写文本,可以使用FileWriter或OutputStreamWriter。

或者,您可以使用the Files class中的一种方法,例如:

Path p = Paths.get(ismmilaf);
Files.write(p, moarif1.getBytes(StandardCharsets.UTF_8));

答案 2 :(得分:0)

这是因为您使用了不同的charset并且这些字符不属于那个,您是否可以尝试使用UTF-8,例如:

FileOutputStream fos = new FileOutputStream("G://data//123.txt");
        Writer w = new BufferedWriter(new OutputStreamWriter(fos, StandardCharsets.UTF_8));
        String stringa = "L’uomo più forte";
        w.write(stringa);
        w.write("\n");
        w.write("pause");
        w.write("\n");
        w.flush();
        w.close();

答案 3 :(得分:0)

您可以将它指定为PrintStream的第三个参数:

foostream = new FileOutputStream(file, true);
stream  = new PrintStream(foostream, true, "UTF_8");
stream.println("whatever");

或使用StandardCharsets.DesiredEncoding(我记不太清楚,但也许您需要在其上使用.toString(),例如:

stream  = new PrintStream(foostream, true, StandardCharsets.UTF-8.toString());