1

JavaでcsvファイルにUTF-8で書き込みたい

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構造が原因ですか?回避策はありますか?

4

1 に答える 1

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
于 2013-09-04T21:57:18.173 に答える