mysql存储中文字符乱码

来源:互联网 发布:算法分析的目的是 编辑:程序博客网 时间:2024/06/08 06:50

在使用原生的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提交的话,还要考虑传输过程中的乱码问题。

0 0
原创粉丝点击