文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>如何解决mysql乱码问题

如何解决mysql乱码问题

时间:2011-01-11  来源:李湛斌

 

但是我在Action调用UserDao来进行插入用户类的时候,发生了乱码的问题

 


1.从jsp页面上(gb2312的页面)上传到Action类的UserForm的值应该是乱码的,这时候我们要做第一步的转换编码

 

2.从Action类调用UserDao来进行对数据库的数据插入时,我们也需要首先设定数据库的编码格式,否则也会出现乱码

 

解决方法一:

1.首先在UserDao中增加一个编码转换的函数bx

 

public String bx(String str) {
try {
byte b[] = str.getBytes("iso-8859-1");
str
= new String(b);
}
catch (Exception e) {
}
return str;
}

 

2.在获取中文之后,因为中文是乱码的,必须把编码弄成iso-8859-1才能正常显示中文,所以在插入数据库之前,

 

要把需要转换的中文利用bx函数进行转换

 

ps = con.prepareStatement("insert into users(name,password,adds,sex,email,age,times) values(?,?,?,?,?,?,?)");

ps.setString(
1, bx(uf.getName()));
ps.setString(
2, uf.getPassword());
ps.setString(
3, bx(uf.getAdds()));
ps.setString(
4, bx(uf.getSex()));
ps.setString(
5, uf.getEmail());
ps.setString(
6, uf.getAge());
ps.setString(
7, ts);

 

3.修改连接字符串url

 

 

String url = "jdbc:mysql://localhost:3306/" + dbname+"?useUnicode=true&characterEncoding=gbk";

增加"?useUnicode=true&characterEncoding=gbk"增加这一串代码,主要是设定数据库的编码格式为gbk,记得是小写

 

4.数据库是什么编码不重要,重要的是存储中文的字段的编码必须是gb2312,因为这样才能存储中文

注意name的Column Charset是gb2312 ,sex和adds字段同理,把Column Charset改为gb2312

 

 

解决方法二:

 

1.因为在jsp页面传递到ActionForm的时候,中文已经是乱码的,所以我们可以在ActionForm中的reset函数直接就把编码设置为GBK

public void reset(ActionMapping mapping, HttpServletRequest request) {
try {
request.setCharacterEncoding(
"GBK");
}
catch (Exception e) {
// TODO: handle exception
}
}

 

2.修改连接字符串url

String url = "jdbc:mysql://localhost:3306/" + dbname+"?useUnicode=true&characterEncoding=gbk";

增加"?useUnicode=true&characterEncoding=gbk"增加这一串代码,主要是设定数据库的编码格式为gbk,记得是小写

 

3.数据库是什么编码不重要,重要的是存储中文的字段的编码必须是gb2312,因为这样才能存储中文

注意name的Column Charset是gb2312 ,sex和adds字段同理,把Column Charset改为gb2312

 

 

通过以上2种方法其中之一都可以实现mysql乱码的解决,记住步骤

1.转换乱码为中文

2.url修改,数据库编码格式为gbk

3.中文字段必须为中文编码

 

相关阅读 更多 +
排行榜 更多 +
谷歌卫星地图免费版下载

谷歌卫星地图免费版下载

生活实用 下载
谷歌卫星地图免费版下载

谷歌卫星地图免费版下载

生活实用 下载
kingsofpool官方正版下载

kingsofpool官方正版下载

赛车竞速 下载