想要将文件设置为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();
答案 0 :(得分:6)
您需要使用OutputStreamWriter
,以便指定输出字符集。如果需要打印语义,可以将其包装在PrintWriter
或BufferedWriter
中:
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());