Search code examples
javaencodingutf-8

Java BufferedWriter object with utf-8


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,


Solution

  • 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.)