我编写了一个实现文件结构的程序,该程序基于该结构打印出一个产品文件。产品名称包括字母Æ、Ø和Å。这些字母在输出文件中显示不正确。我使用了。
PrintWriter printer = new PrintWriter(new FileOutputStream(new File("products.txt")));
实现需要的字符集为ISO 8859-1或Windows ANSI(CP 1252)。
PrintWriter
都有一个 bug,你无法知道它们是否出错。如果你试图将一个无法适应指定编码的代码点推送到它们那里,它们不会引发异常或返回失败。它们甚至不会告诉你文件系统是否已满;我似乎记得它们不会。我总是以显式的Charset.forName("UTF-8").newEncoder()
作为第二个参数编写我的输出OutputStreamWriter
构造函数。这有点繁琐,也许有更好的方法。 - tchrist