6

Javaでcsvファイルを読み込んで、新しい情報を含む新しい列を追加し、それをCSVファイルにエクスポートしています。UTF-8 形式の CSV ファイルの読み取りに問題があります。行ごとに読み取り、に保存しStringBuilderますが、行を印刷すると、読み取っている情報が UTF-8 ではなく ANSI であることがわかります。System.out.printprintstreamUTF の両方を使用しましたが、情報は引き続き ANSI で表示されます。これは私のコードです:

    BufferedReader br;
    try {
        br = new BufferedReader(new InputStreamReader(new FileInputStream(
                "./users.csv"), "UTF8"));
        String line;
        while ((line = br.readLine()) != null) {
            if (line.contains("none@none.com")) {
                continue;
            }
            if (!line.contains("@") && !line.contains("FirstName")) {
                continue;
            }
            PrintStream ps = new PrintStream(System.out, true, "UTF-8");
            ps.print(line + "\n");
            sbusers.append(line);
            sbusers.append("\n");
            sbusers2.append(line);
            sbusers2.append(",");
        }
        br.close();
    } catch (IOException e) {
        System.out.println("Failed to read users file.");
    } finally {
    }

「教授-P�s」のような情報を出力します。読み取りが正しく行われていないため、新しいファイルへの出力も ANSI でエクスポートされています。

4

5 に答える 5

4

CSV がUTF-8エンコードされていることを確認してください。私の推測では、そうではありません。ISO-8859-1ファイルの読み取りに使用してみてください。ただし、出力はそのままにしておきますUTF-8。(どちらも機能する傾向がありますが、@Marcelo が提案したように使用する必要がありUTF8ます)UTF-8UTF-8

于 2013-09-30T17:50:17.953 に答える
1

行で:

br = new BufferedReader(new InputStreamReader(new FileInputStream("./users.csv"),"UTF8"));

あなたの文字セットはすべきではあり"UTF-8"ません"UTF8"

于 2013-09-30T17:47:28.890 に答える
1

UTFエンコーディングを使用したSystem.outへの出力????????????

どうしてそうするか ?System.out とそれが使用するエンコーディングは OS レベルで決定され (JVM のデフォルトの文字セットになります)、System.out で使用したいのはそれだけです。

于 2013-09-30T17:50:03.470 に答える
1

@Marcelo で提案されているように、次UTF8の代わりに使用しUTF-8ます。

BufferedReader in = new BufferedReader(
       new InputStreamReader(
                  new FileInputStream("./users.csv"), "UTF8"));

2 つ目は、 のことは忘れてPrintStream、 を使用するSystem.outか、できればロギング API を使用することです。Java が文字列をコンソールに出力する方法について心配する必要はありません (文字エンコーディングに関する第 1 のルール: 読み取りに成功したら、Java にエンコーディングを処理させ、文字列に書き込むときにのみ再度心配する必要があります)。外部ファイル/データベース/など)。

3 番目に重要なことですが、ファイルが実際に UTF-8 でエンコードされていることを確認してください。これがエンコードの問題の 99% の原因です。

必ず実際の UTF-8 ファイルでテストしてください (iconv などのツールを使用して UTF-8 に変換し、それについて確認してください)。

于 2013-09-30T17:57:08.980 に答える