mysql存储中文字符乱码

在使用原生的JDBC的同学不知道有没有遇到过类似的问题mysql中的中文乱码的问题,首先表现就是我们存储的时候参数明明使用的是中文,但是Java代码执行完成后数据库中变成了  “???” 也就是中文乱码。遇到这个别着急,这里有几种方式我们排除:

1.先确定数据库新建表的时候采用的存储引擎是支持中文的:就是在建表的时候在后面跟上:engine=InnoDB default character set=utf8; 

下面是我的建表语句:

create TABLE user(
`id` INT(11) PRIMARY KEY auto_increment comment '主键',
`user_name` VARCHAR(20) not NULL DEFAULT '' comment '用户名',
`age` int(4) not NULL DEFAULT 0 comment '年龄',
`phone_number` VARCHAR(11) NOt NULL DEFAULT '' comment '电话',
`sex` tinyint(4) not NULL DEFAULT 0 comment '性别',
`pass_word` VARCHAR(20) not NULL DEFAULT '' comment '密码',
`birthDay` TIMESTAMP NOt NULL DEFAULT CURRENT_TIMESTAMP 
)engine=InnoDB default character set=utf8;
这里我采用的是 InnoDB 存储引擎,设置的编码格式是 utf8;

2.这样的话要是还是存储的时候产生中文乱码:
看看咱们的数据库连接的时候设置的编码问题:url=jdbc:mysql://127.0.0.1:3306/servlet?useUnicode=true&characterEncoding=utf8
在建立数据库的连接的时候,需要设置这一句话,数据库才是在连接时使用的我们自定义的编码格式。(我就是这里出的问题)

3.要是以上的两种方式都不行,还有第三种问题:
在添加参数的时候加上 getBytes("ISO-8859-1"), "UTF-8")
这句话就是说把字节流以utf8格式进行编码存储
4.要是还不行:那就去修改mysql的安装路径下的文件:
编辑/etc/my.cnf ,在[mysql]段加入default_character_set=utf8;

应该问题不大了。多试试,要是get/post提交的话,还要考虑传输过程中的乱码问题。

你可能感兴趣的:(MySql)