有两种可能性:
> Java在输出文件时使用了错误的编码.
>文件实际上是正确的,无论您使用什么来显示文件都使用错误的编码.
假设问题是第一个问题,根本原因是Java已经发现平台的默认编码不是您想要/期望的编码.有三种方法可以解决这个问题:
>弄清楚为什么Java有默认的语言环境和编码“错误”并解决了这个问题.这将与您的操作系统的区域设置有关…
>有关如何在命令行覆盖默认语言环境设置的详细信息,请阅读this FAQ.
>使用明确指定编码的PrintWriter构造函数,以便应用程序不依赖于默认编码.例如:
PrintWriter pw = new PrintWriter("filename", "ISO-8859-1");
回应此评论:
Don’t PrintWriters all have the bug that you can’t know you had an error with them?
>这不是一个错误,它是一个设计功能.
>您可以查看是否有错误.你只是无法找出它是什么.
>如果你不喜欢它,你可以改用Writer.
They won’t raise an exception or even return failure if you try to shove a codepoint at them that can’t fit in the designated encoding.
我相信一个普通的作家也不会……除非你专门建造它以做到这一点.正常行为是用特定字符替换任何不可映射的代码点,尽管这在javadocs(IIRC)中没有指定.
Do they even tell if you the filesystem fills up; I seem to recall tha