Reputation: 121
a want to set a file to utf-8
the FileOutputStream takes just two parameter
my code is
PrintWriter kitaba1 = null;
try {
kitaba1 = new PrintWriter(new FileOutputStream(new File(ismmilaf), true ));
} catch (FileNotFoundException ex) {
ex.printStackTrace();
}
//kitaba1.println(moarif1);
kitaba1.close();
Upvotes: 12
Views: 50585
Reputation: 1572
You can specify it as the third param of PrintStream like this:
foostream = new FileOutputStream(file, true);
stream = new PrintStream(foostream, true, "UTF_8");
stream.println("whatever");
or using StandardCharsets.DesiredEncoding (i didn't remember it well but maybe you need to use .toString() on it, like:
stream = new PrintStream(foostream, true, StandardCharsets.UTF-8.toString());
Upvotes: 2
Reputation: 30809
That is because you are using different charset
and those characters do not belong to that, could you try using UTF-8
, e.g.:
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();
Upvotes: 1
Reputation: 595369
You need to use OutputStreamWriter
so you can specify an output charset. You can then wrap that in a PrintWriter
or BufferedWriter
if you need printing semantics:
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();
Upvotes: 13
Reputation: 328568
FileOutputStream is meant to be used to write binary data. If you want to write text you can use a FileWriter or an OutputStreamWriter.
Alternatively you could use one of the methods in the Files
class, for example:
Path p = Paths.get(ismmilaf);
Files.write(p, moarif1.getBytes(StandardCharsets.UTF_8));
Upvotes: 5