我有以下代码,我想使输出流使用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,但这似乎是一种极端的措施。)