I have the following code and I want to make the outputstream use utf-8. Basically I have characters like é
that appear as é
so it looks like an encoding issue.
I've seen lots of examples that use...
OutputStreamWriter out = new OutputStreamWriter(new FileOutputStream(path),"UTF-8");
My current code though is...
BufferedWriter out = new
BufferedWriter(new FileWriter(DatabaseProps.fileLocation + "Output.xml"));
Is it possible to define this object as UTF-8 without having to use the OutputStreamWriter?
Thanks,
No. FileWriter
doesn't let you specify the encoding, which is extremely annoying. It always uses the system default encoding. Just suck it up and use OutputStreamWriter
wrapping a FileOutputStream
. You can still wrap the OutputStreamWriter in a BufferedWriter of course:
BufferedWriter out = new BufferedWriter
(new OutputStreamWriter(new FileOutputStream(path), StandardCharsets.UTF_8));
Or, as of Java 8:
BufferedWriter out = Files.newBufferedWriter(Paths.get(path));
(Of course, you could change your system default encoding to UTF-8, but that seems a bit of an extreme measure.)