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