Неправильная кодировка в файле чтения / записи Java

Я хочу написать в CSV-файл в UTF-8 в Java

я использую BufferedWriter out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("temp.csv"),Charset.forName("UTF-8").newEncoder())); после поиска в интернете

Я все еще получаю нелегальные персонажи.

Я хочу написать "Kürzlich" в мой файл, а потом снова читать и писать из того же файла. Когда я делаю это, я получаю "Kürzlich"

Как я получаю "Kürzlich": я анализирую XML-файл, используя DOM.

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

и затем я извлекаю свою строку.

Мне все равно, как это отображается на экране. Я хочу сравнить материал, который я пишу в файле, с другим файлом, который конвертируется идеально.

Это происходит из-за структуры DOM? Есть ли способ обойти?

1 ответ

Вы, кажется, пишете UTF-8, но я не понимаю, как вы читаете UTF-8. Скорее всего, вы читаете кодировку по умолчанию.

Попробуйте обернуть открытый поток InputStreamReader, указав нужную кодировку.

Я предлагаю вам попробовать это, чтобы показать, что вы можете написать и прочитать 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
Другие вопросы по тегам