Java读/写文件中的编码不正确

时间:2013-09-04 21:55:02

标签: java file dom encoding read-write

我想写一个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结构而发生?有办法吗?

1 个答案:

答案 0 :(得分: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