今天做毕设,使用的是MySQL数据库,遇到了乱码问题,自己通过查资料解决了,现在将自己的学习成果记录在这里。
1.首先网页使用utf8编码
2.数据库字符集要要用utf8这样可以统一,因为如果二者不统一,就会乱码
3.其次,post默认传递参数是按照iso-8859-1编码,所以一定要编写字符处理函数
logname = request.getParameter("logname");
logname = handleString(logname);
public String handleString(String s){
try{
byte bb[] = s.getBytes("iso-8859-1");
s = new String(bb,"utf-8");
}catch(Exception ee){}
return s;
}
4.即使这样,库里面的内容可以正确写入,但是读出来的时候却是乱码,处理方法如下:
String uri = "jdbc:mysql://localhost/MakeFriend?useUnicode=true&characterEncoding=utf-8";
在连接库的时候加上额外的参数
5.还有,mysql控制台默认不显示汉字,所以,即使库里的内容正确,也会显示乱码,
处理方法如下:
在mysql的目录下,有个my.ini的文件,打开将default-character-set=latin1改为
default-character-set=gbk 注意:有两处需要改动。改动完成后,重启mysql服务,即可解决问题
6.在数据库中建表的时候可能会出现不允许在建表时添加外键的情况,处理方法如下:
例如我要建个表table ,主键为classId,外键为三个:teacherId,majorId,gradeId分别参考于表、表、表
操作步骤为:
create table curriculum
(classId varchar(10) primary key,
className varchar(20)
teacherid varchar(10),
majorId varchar(10),
gradeId varchar(10),
);
alter table curriculum
add constraint `fk_teacherId` foreign key (`teacherId`)references teacher(`teacherId`);
alter table curriculum
add constraint `fk_gradeId` foreign key (`gradeId`)references grade(`gradeId`);
alter table curriculum
add constraint `fk_majorId` foreign key (`majorId`)references major(`majorId`);