繁体   English   中英

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

[英]Improper encoding in Java Read/Write file

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

您似乎正在编写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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM