java - 读取 UTF-8 格式的 CSV 文件

标签 java csv utf-8

我正在用 java 读取 csv 文件,添加一个包含新信息的新列并将其导出回 CSV 文件。我在读取 UTF-8 格式的 CSV 文件时遇到问题。我逐行阅读并将其存储在 StringBuilder 中,但是当我打印该行时,我可以看到我正在阅读的信息不是 UTF-8,而是 ANSI。我两个都用了 System.out.printprintstream UTF 格式,而信息仍以 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 {
    }

它打印出诸如“Professor -P?s”之类的信息。由于读取未正确完成,新文件的输出也以 ANSI 格式导出。

最佳答案

你确定你的 CSV 是 UTF-8编码?我的猜测是它不是。尝试使用 ISO-8859-1用于读取文件,但将输出保持为 UTF-8 . ( UTF8UTF-8 都可以正常工作,但您应该按照@Marcelo 的建议使用 UTF-8)

关于java - 读取 UTF-8 格式的 CSV 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19100448/

相关文章:

java - 确定长度为 N 的数组是否在长度为 M 的数组中

将数组转换为 CSV 的 Java API

Android webview葡萄牙语字符

java - 在服务器上运行 struts2 应用程序时出现 http 状态 404

java - 一种说法 "For All Subclasses In My Project That Extend This Superclass"?

java - Spring Boot 测试没有从兄弟包中找到 bean

python - 使用 Python 从 Mongodb 字段中删除文本

java - Java 中是否有接受多个引号字符的 CSVReader 类?

python - 想要 Python 创建一个 UTF-8 文件,得到了一个 ANSI 文件。为什么?

python - 在 python 中为波斯语使用 unicode