微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

从CSV用Java mySQL插入特定的字符集

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

CSV是ISO-8859-1编码的.
通过缓冲的文件读取器读取它,并使用String方法进行解析.
然后,这些字符串通过JDBC驱动程序引入到MysqL中.

问题是:调音中丢失了重音(这是法语应用程序).在MysqL数据库中,它们采用的格式不明,既不是UTF-8,也不是Latin-1 …

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

解决方法:

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

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会担心转换本身是否正确.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐