我有以下代码,我想使输出流使用utf-8。基本上我有像é这样的字符,它们显示为é,因此看起来像是编码问题。

我看过很多使用...的例子

OutputStreamWriter out = new OutputStreamWriter(new FileOutputStream(path),"UTF-8");

我当前的代码不过是...
BufferedWriter out = new
BufferedWriter(new FileWriter(DatabaseProps.fileLocation + "Output.xml"));

是否可以在不必使用OutputStreamWriter的情况下将此对象定义为UTF-8?

谢谢,

最佳答案

不能。FileWriter不允许您指定编码,这非常烦人。它始终使用系统默认编码。只需将其吸干并使用OutputStreamWriter包裹FileOutputStream即可。当然,您仍然可以将OutputStreamWriter包装在BufferedWriter中:

BufferedWriter out = new BufferedWriter
    (new OutputStreamWriter(new FileOutputStream(path), StandardCharsets.UTF_8));

或从Java 8开始:
BufferedWriter out = Files.newBufferedWriter(Paths.of(path));

(当然,您可以将系统默认编码更改为UTF-8,但这似乎是一种极端的措施。)

10-01 22:38
查看更多