我在使用java 自动创建mysql 数据库,并导入数据的时候,出现中文乱码,
url设置为:url=jdbc\:mysql\://localhost\:3306/test?createDatabaseIfNotExist\=true&useUnicode\=true&characterEncoding\=UTF-8,
本意是想指定数据库编码方式为UTF-8,可是根本不起总用,sql文件都是UTF-8格式的,读取文件时也是用的UTF-8,初始化的脚本也是UTF-8:
CREATE TABLE `shopping_activity_goods` (
`id` bigint(20) NOT NULL auto_increment,
`addTime` datetime default NULL,
`deleteStatus` bit(1) NOT NULL,
`ag_status` int(11) NOT NULL,
`act_id` bigint(20) default NULL,
`ag_admin_id` bigint(20) default NULL,
`ag_goods_id` bigint(20) default NULL,
`ag_price` decimal(12,2) default NULL,
PRIMARY KEY (`id`),
KEY `FK614D4F77B980F891` (`ag_admin_id`),
KEY `FK614D4F77ADEB3EB9` (`act_id`),
KEY `FK614D4F7733170D71` (`ag_goods_id`),
CONSTRAINT `FK614D4F7733170D71` FOREIGN KEY (`ag_goods_id`) REFERENCES `shopping_goods` (`id`),
CONSTRAINT `FK614D4F77ADEB3EB9` FOREIGN KEY (`act_id`) REFERENCES `shopping_activity` (`id`),
CONSTRAINT `FK614D4F77B980F891` FOREIGN KEY (`ag_admin_id`) REFERENCES `shopping_user` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
但是创建出来的数据库字符集却是latin1 -- cp1252 West European
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
在您使用Java自动创建MySQL数据库并导入数据时遇到中文乱码问题,这可能是由于字符集设置不正确导致的。根据知识库资料,这里提供一个结构化的解决方案来帮助您解决此问题:
url
参数中未明确指定字符集,导致客户端与服务器之间字符传输使用的字符集默认非UTF-8,与期望的中文字符编码不符。修改数据库连接URL
url = "jdbc:mysql://localhost:3306/test?createDatabaseIfNotExist=true&useUnicode=true&characterEncoding=UTF-8";
这样可以确保创建数据库及后续操作均使用UTF-8字符集。
检查数据库服务器配置
ALTER DATABASE test CHARACTER SET utf8 COLLATE utf8_general_ci;
客户端字符集设置
statement.execute("SET NAMES 'utf8';");
通过上述步骤,您可以解决在Java程序中自动创建MySQL数据库及导入中文数据时出现的乱码问题。如果问题依旧存在,建议检查是否有其他中间件或代码逻辑影响了字符编码的处理。