Java: can't save in UTF-8

2019-03-06 07:45发布

I have this line of code in java:

new BufferedWriter(new OutputStreamWriter(new FileOutputStream(name, append), "UTF-8"));

This writer does not write an UTF-8 file, because when I open it in notepad++ it says that the encoding is: ANSI as UTF-8. I need it to be pure UTF-8.

Do you have any suggestions?

3条回答
淡お忘
2楼-- · 2019-03-06 08:44

notepad++ (and any other tool) can only guess the encoding, it's not written anywhere in your file (or in some metadata).

And if the text you've written doesn't contain any characters outside the ASCII range (i.e. no character with a Unicode codepoint > 127), then a file with ANSI encoding is indistinguishable from one in UTF-8 encoding.

查看更多
做自己的国王
3楼-- · 2019-03-06 08:47

Most likely Notepad++ needs the BOM at the beginning of your file. Write the bytes EF BB BF first to your file, then the encoded characters.

查看更多
祖国的老花朵
4楼-- · 2019-03-06 08:48

Notepad++ uses a heuristic algorithm to detect the encoding, i.e. the detected encoding can differ from the true on (it's a guess).

In this case, Notepad++ is correct, but misunderlabeling the encoding. ANSI as UTF-8 is pure UTF-8, just without a BOM.

查看更多
登录 后发表回答