java utf8编码输出流不工作

问题描述 投票:0回答:1

我需要编写一个能够将UTF-8数据写入文件的程序。

我在互联网上找到了例子,但是,我无法取得理想的结果。

码:

import java.io.BufferedWriter;
import java.io.FileOutputStream;
import java.io.OutputStreamWriter;
import java.io.Writer;

public class UTF8WriterDemo {

    public static void main(String[] args) {
        Writer out = null;
        try {
            out = new BufferedWriter(
                    new OutputStreamWriter(new FileOutputStream("c://java//temp.txt"), "UTF-8"));


            String text = "This texáát will be added to File !!";

            out.write(text);
            out.close();
        } catch (Exception e) {
            e.printStackTrace();
        }

    }

}

一切都运行成功,但最后我看到特殊字符没有正确显示:这个texááit将被添加到文件!!

我从互联网上尝试了几个相同结果的例子。

我使用Visual Studio代码。

问题可能在哪里?

谢谢

java encoding outputstream
1个回答
0
投票

你的代码是正确的。您可能已经有一个名为temp.txt的文件,因此Java会将文本写入现有文件(替换以前的内容)。可能存在的问题是您已在文件中设置的编码。

换句话说,您不能(或者至少不应该)使用例如WINDOWS-1250编码将UTF-8文本写入文件,否则您将得到您所描述的精确结果。

如果您没有此文件,Java将自动创建一个UTF-8编码的文件。

可能的解决方案:

  1. 更改当前文件的编码(通常可以在任何文本编辑器中打开它,使用另存为,然后将编码指定为UTF-8。
  2. 删除此文件,Java将使用正确的编码自动创建它。

顺便说一句,您应该使用StandardCharsets类而不是使用String charsetName以避免UnsupportedEncodingException:

new OutputStreamWriter(new FileOutputStream("temp.txt"), StandardCharsets.UTF_8)
© www.soinside.com 2019 - 2024. All rights reserved.