1

我想在 java 中写入 UTF-8 格式的 csv 文件

BufferedWriter out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("temp.csv"),Charset.forName("UTF-8").newEncoder()));在网上搜索后使用

我仍然收到非法字符。

我想将“Kürzlich”写入我的文件,然后再从同一个文件中读取和写入。当我这样做时,我得到“Kürzlich”

我如何得到“Kürzlich”:我正在使用 DOM 解析一个 xml 文件。

    DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
    DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
    InputStream openstream = url.openStream();
    Document doc = dBuilder.parse(openstream);
    doc.getDocumentElement().normalize();

然后我提取我的字符串。

我不在乎它在屏幕上的显示方式。我想将我在文件中写入的内容与另一个完美转换的文件进行比较。

是因为 DOM 结构而发生的吗?有办法吗?

4

1 回答 1

1

您似乎正在编写 UTF-8,但我看不出您是如何阅读 UTF-8 的。您很可能正在阅读默认编码。

尝试使用 InputStreamReader 包装 openstream,指定您想要的编码。

我建议你试试这个来证明你可以写和读 UTF-8

String text = "Kürzlich";
PrintWriter pw = new PrintWriter(new BufferedWriter(new OutputStreamWriter(new FileOutputStream("test.txt"), "UTF-8")));
pw.println(text);
pw.close();

BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("test.txt"), "UTF-8"));
String line = br.readLine();
br.close();
System.out.println("Text is the same is " + (line.equals(text)));

印刷

Text is the same is true
于 2013-09-04T21:57:18.173 回答