txt文件中的字符°编码和可视化

时间:2017-10-11 10:04:40

标签: java encoding character

我在表格中有一个字段,其中包含字符串“Address Pippo p.2°”。 我的程序读取此值并将其写入txt文件,但输出为:

“地址Pippo p.2°”(Â是不需要的)

我遇到问题,因为txt文件是位置文件。

我用这些Java结构打开文件: FileWriter fw = new FileWriter(file,true); pw = new PrintWriter(fw);

我想写没有奇怪字符的字符串

对我有任何帮助吗?

提前致谢

2 个答案:

答案 0 :(得分:1)

尝试将字符串编码为UTF-8,如下所示

    File file = new File("D://test.txt");
    FileWriter fw = new FileWriter(file, true);
    PrintWriter pw = new PrintWriter(fw);
    String test = "Address Pippo p.2 °";
    ByteBuffer byteBuffer = Charset.forName("UTF-8").encode(test);
    test = StandardCharsets.UTF_8.decode(byteBuffer).toString();
    pw.write(test);
    pw.close();

答案 1 :(得分:1)

Java使用Unicode。将文本写入文件时,会使用特定的字符编码对其进行编码。如果未明确指定它,它将使用“系统默认编码”,这是您为特定JVM实例配置为默认值的任何内容。您需要知道用于编写文件的编码。然后,您需要使用相同的编码来读取和显示文件内容。您看到的有趣角色可能是因为使用UTF-8编写文件,然后尝试阅读并在例如记事本使用Windows-1252(“ANSI”)编码。

决定你想要的编码,并坚持阅读和写作。要使用Windows-1252编写,请使用:

Writer w = new OutputStreamWriter(new FileInputStream(file, true), "windows-1252");

如果您使用UTF-8编写,请告诉记事本您希望它以UTF-8读取文件。一种方法是在文件的开头写下字符'\ uFEFF'(字节顺序标记)。

如果使用UTF-8,请注意非ASCII字符会将后续字节抛出位置。因此,例如,如果电话字段必须始终从字节位置200开始,那么在它之前在地址字段中使用非ASCII字符将使电话字段从字节位置201或202开始。使用Windows-1252编码您赢了没有这个问题,但该编码不能编码所有Unicode字符。