2013-09-04 5 views
1

Я хочу, чтобы записать в файл CSV в кодировке UTF-8 в JavaНеправильная кодировка в 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. Скорее всего, вы читаете кодировку по умолчанию.

Попробуйте обернуть openstream с помощью 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 
+0

Я читаю один и тот же путь BufferedReader в = новый BufferedReader (новый InputStreamReader (новый FileInputStream (yourFile), Charset.forName ("UTF-8") newDecoder())). Но он приходит позже, поэтому не должен иметь никакого эффекта. Он даже не пишет правильно –

+0

Вы уверены, что используете UTF-8 правильно, когда говорите неправильно? Как насчет использования 'in' для синтаксического анализа вместо создания его, когда уже слишком поздно? –

+0

Предполагая, что я не читаю. Это шаг 2. Просто записывая файл, используя указанный код, я не получаю правильный результат. –