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,
You can use improved FileWriter, improved by me.
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 useOutputStreamWriter
wrapping aFileOutputStream
. You can still wrap the OutputStreamWriter in a BufferedWriter of course:Or as of Java 8:
(Of course you could change your system default encoding to UTF-8, but that seems a bit of an extreme measure.)
As the documentation for FileWriter explains,
There's no reason you can't construct your BufferedWriter on top of the OutputStreamWriter though.
Use the method, Files.newBufferedWriter(Path path, Charset cs, OpenOption... options)
As requested by Toby, here is the sample code.