首页 > 代码库 > 从内存中写入mysql中文数据乱码解决
从内存中写入mysql中文数据乱码解决
一. 问题
数据库编码:utf8
mysql> create database dbnameDEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
表编码:utf8
drop table if exists `test`;
create table `test` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT ‘ID‘,
`name` varchar(50) default ‘‘,
`create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT ‘创建时间‘,
PRIMARY KEY (`id`)
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
jdbc url:
url: jdbc:mysql://host:port/dbname
数据库和数据库表都已经使用了utf8编码,但是插入中文数据时仍然乱码。
二. 原因
在jdbc中连接mysql时,jdbc url参数中有一个属性characterEncoding控制字符串编码,该值默认为:autodetect。需要明确设置为utf8,可解决问题。
MySQL文档解释如下,详见:https://dev.mysql.com/doc/connector-j/5.1/en/connector-j-reference-configuration-properties.html中"Setting Configuration Properties"部分详细说明。
三. 解决办法
在jdbc url中明确设置characterEncoding属性为utf8。
url: jdbc:mysql://host:port/dbname?characterEncoding=utf8
从内存中写入mysql中文数据乱码解决
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。