我想从csv文件中读取数据,然后写入MySql。数据包含外语。
当我试图将包含日语字符的记录插入MySql时,我遇到了这个错误。
"1366Incorrect string value: 'xE6xB0xB4xE7x9Dx80...' for column 'name' at row 1"
SQL语句如下:
INSERT INTO `MerchandiseMaster` (id,name) VALUES ('20000101','JANIE AND JACK水着 鶯茶系 大胆花柄')
我的csv文件使用UTF-8编码,MySql数据库模式的字符集为utf8_gerneral_ci
。
当我通过JDBC(mysql-connector-java-5.1.34-bin.jar
)连接到数据库时,我已经设置了这些参数:
connect = DriverManager.getConnection("jdbc:mysql://localhost/mydata?"
+ "useUnicode=yes&characterEncoding=UTF-8&user=user123&password=user123.");
我的问题是:
为了正确处理外来字符,我还缺少什么吗?
我在一个网站上发现了这一点,所以注意emptor,但显然MySQL的UTF-8支持是不完整的。2010年,他们添加了新的支持utf8mb4
,支持整个UTF-8编码方案。
添加到MySQL配置文件:
[client]
default-character-set = utf8mb4
[mysql]
default-character-set = utf8mb4
[mysqld]
character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
这是全文的链接。我还没有尝试过,所以先仔细测试所有内容,并在做任何事情之前备份数据库