如何将特殊字符写入文本文件

时间:2018-04-19 12:41:02

标签: java file text encoding

这是我的代码,我正在尝试用↑和→写一个替换“Up”和“Right”的文本文件。问题是文本文件输出是:“††'”(这不是我想要的),控制台输出是“↑→”。

private static void print(String t){
    File log = new File("a.txt");
    String raw = t;
    raw = raw.replaceAll("Up", " \u2191 ");     //↑
    raw = raw.replaceAll("Right", " \u2192 ");  //→

    try{
        FileWriter fileWriter = new FileWriter(log, true);
        BufferedWriter bufferedWriter = new BufferedWriter(fileWriter);
        bufferedWriter.write(raw + "\n");
        System.out.println(raw + "\n")
        bufferedWriter.close();

    }catch(IOException e) {}
}

我认为这可能是编码错误,但我不知道如何修复它。

1 个答案:

答案 0 :(得分:0)

首先,在编写文件之前,最好指定编码(您可能需要UTF-8)。

private static void print(String t){
    File log = new File("a.txt");
    String raw = t;
    raw = raw.replaceAll("Up", " \u2191 ");
    raw = raw.replaceAll("Right", " \u2192 ");

    try{
        BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(log), "UTF-8"));
        bufferedWriter.write(raw + "\n");
        System.out.println(raw + "\n");
        bufferedWriter.close();

    }catch(IOException e) {}
}

然后,您需要确保文件查看器也设置为UTF-8。您的文件查看器似乎可能正在查看ANSI中的文件。更改该设置取决于您的文件查看器 - 尝试使用Google搜索“[您的文件查看器名称] UTF-8”。