带有 utf-8 的 Java BufferedWriter 对象 [英] Java BufferedWriter object with utf-8
问题描述
我有以下代码,我想让输出流使用 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");
我目前的代码是...
BufferedWriter out = new
BufferedWriter(new FileWriter(DatabaseProps.fileLocation + "Output.xml"));
是否可以在不使用 OutputStreamWriter 的情况下将该对象定义为 UTF-8?
Is it possible to define this object as UTF-8 without having to use the OutputStreamWriter?
谢谢,
推荐答案
没有.FileWriter
不允许您指定编码,这非常烦人.它始终使用系统默认编码.只需吸收它并使用 OutputStreamWriter
包装一个 FileOutputStream
.当然,您仍然可以将 OutputStreamWriter 包装在 BufferedWriter 中:
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));
或者从 Java 8 开始:
Or as of Java 8:
BufferedWriter out = Files.newBufferedWriter(Paths.of(path));
(当然,您可以将系统默认编码更改为 UTF-8,但这似乎有点极端.)
(Of course you could change your system default encoding to UTF-8, but that seems a bit of an extreme measure.)
这篇关于带有 utf-8 的 Java BufferedWriter 对象的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!