private static void write(String x, File file)
    throws FileNotFoundException, IOException {
    StringTokenizer tokenizer = new StringTokenizer(x) ;
    FileOutputStream fop = new FileOutputStream(file, true);
    while (tokenizer.hasMoreTokens()) {
        fop.write(tokenizer.nextToken().toLowerCase().getBytes());
        fop.write(System.getProperty("line.separator").getBytes());
    }
}


关于上面的代码,我在代码中调用此函数以在某些条件成立时写一些单词。但是,有时我会遇到一些奇怪的字符,例如â€sé等。如何防止这种情况出现?

最佳答案

为了将“字符”存储在文件中,必须将它们转换为字节序列。您可以直接使用getBytes(),也可以使用流编写器为您完成此操作。

不幸的是,有多种不同的方式来表示重音字符和其他原始ASCII集之外的字符。代码中的getBytes()根据系统默认编码返回一种这样的表示形式。

当您看到奇怪的字符时,并不是文件有问题,而是您正在使用其他编码读取文件。

您需要知道在输出中寻找哪种编码,然后您可以告诉getBytes()产生该编码。例如:

fop.write(tokenizer.nextToken().toLowerCase().getBytes("Windows-1252"));

10-08 01:14