Неправильная кодировка в файле чтения / записи 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