Java:无法以 UTF-8 格式保存
我在java中有这行代码:
new BufferedWriter(new OutputStreamWriter(new FileOutputStream(name, append), "UTF-8"));
This writer does not write an UTF-8 file,因为当我在notepad++中打开它时,它说编码是:ANSI as UTF-8。我需要它是纯UTF-8。
您有什么建议吗?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
notepad++(以及任何其他工具)只能猜测编码,它不会写入文件中的任何位置(或某些元数据中)。
如果您编写的文本不包含 ASCII 范围之外的任何字符(即没有 Unicode 代码点 > 127 的字符),则使用 ANSI 编码的文件与使用 UTF-8 编码的文件没有区别。
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.
Notepad++ 使用启发式算法来检测编码,即检测到的编码可能与真实的编码不同(这是一个猜测)。
在这种情况下,Notepad++ 是正确的,但误解了编码。
ANSI 为 UTF-8
是纯UTF-8,只是没有BOM。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.Notepad++ 很可能需要在文件开头添加 BOM。首先将字节 EF BB BF 写入文件,然后写入编码字符。
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.