gpt4 book ai didi

java - 使用来自 CSV 的 Java+mySQL 插入特定字符集

转载 作者:可可西里 更新时间:2023-11-01 08:08:07 24 4
gpt4 key购买 nike

我有一个小问题,我正在使用连接到 mySQL 数据库的 Java 应用程序从 CSV 文件构建数据库。

CSV 采用 ISO-8859-1 编码。它通过缓冲文件读取器读取并使用 String 方法进行解析。然后通过JDBC驱动将字符串引入mySQL。

问题是:重音符号(这是一个法语应用程序)在传输中丢失了。在 mySQL 数据库中,它们的格式不明,既不是 UTF-8 也不是 Latin-1...

我的假设是字符串的编码方式很奇怪,并且在重新插入时保持这种编码方式。如何在 Java 中强制执行 INSERT 语句的字符集?

最佳答案

您需要确保使用 InputStreamReader 读取 CSV使用正确的字符集(这是文件本身之一,在这种特殊情况下是 ISO-8859-1)。

BufferedReader reader = new BufferedReader(new InputStreamReader(input, "ISO-8859-1"));

您还需要确保 JDBC 连接字符串包含一个带有正确字符集的 characterEncoding 参数(创建表时使用的字符集,您还没有在 MySQL 上弄清楚)数据库)。如果它显示为 Unicode 字符集,则还需要添加参数 useUnicode=true

String url = "jdbc:mysql://localhost:3306/dbname?characterEncoding=UTF-8&useUnicode=true";

您的下一个问题可能是我如何确定我的数据库表使用的是哪个字符集?。您可以使用 SHOW 命令执行此操作。它将包含有关字符集的信息。

SHOW CREATE DATABASE dbname; -- shows CREATE DATABASE statement.
SHOW CREATE TABLE dbname.tblname; -- shows CREATE TABLE statement.

也就是说,与问题无关,您是否知道 MySQL 提供内置的 CSV 导入功能,因此您不一定需要 Java/JDBC?查看LOAD DATA INFILE command .您可以将 CSV 文件的字符集指定为命令参数,MySQL 会自行处理正确的转换。

关于java - 使用来自 CSV 的 Java+mySQL 插入特定字符集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4241172/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com