很可能 FileWriter
并不是要写入控制台,但它确实如此。
所以我用它来轻松地在两个目的地之间切换。
我只是想知道当涉及到 8 位时会发生什么字符转换
字符。
不带任何参数运行下面的代码,你会看到区别
System.out.println(...)
和 FileWriter
的输出之间。
运行提供文件规范作为参数的代码,您将看到
FileWriter
按预期工作。
我试图:
- 将测试字符串翻译成UTF-8
- 将字符集
(StandardCharsets.UTF_8,Charset.defaultCharset())
传递给FileWriter
- 为
FileDescriptor.out
指定FileWriter
但无济于事。
其他解决方案已准备就绪,但我仍然想知道是否可以使用 FileWriter
。
import java.io.*;
import java.nio.charset.*;
public class ConsoleOutput {
static public void main(String args[]) {
String s = "Hello äöüß áàâçéèê";
String filespc = args.length==0 ? "CON:" : args[0];
boolean console= filespc.equals("CON:"); // For both cmd.exe & PowerShell.
try (BufferedWriter outfile= new BufferedWriter(new FileWriter(filespc))) {
// if (console) s = new String(s.getBytes(StandardCharsets.UTF_8),// StandardCharsets.UTF_8);
System.out.println(s);
outfile.write(s);
outfile.newLine();
}
catch (IOException e) {
System.out.println(e);
}
}
}