首页 新闻 会员 周边 捐助

中文乱码=jsp+jdbc+mysql

0
悬赏园豆:20 [已解决问题] 解决于 2015-12-24 09:06

集成环境本地编码gbk的;

jsp页面处理编码;

<%@ page contentType="text/html;charset=GBK" %>
<% request.setCharacterEncoding("GBK") ;%>

服务层处理编码;

 1 public String handleString(String s){
 2         try{
 3             byte bb[]=s.getBytes("iso-8859-1");
 4             s=new String(bb);
 5         }
 6         catch(Exception ee){
 7         }
 8         return s;
 9 }
10 String name=handleString(request.getParameter("name"));
11 syso结果显示:name=中文,我的意思是后台接收已经正常了;

其实,就是一个更新的sql语句,执行之前,后台打印了一下:

UPDATE books SET id='344', type = '技术类',name = 'java从入门到精通',author = '???',press = '????',price = '12',time = '20120201',number = '33',remark = '????',state='1',js='???' WHERE id = '344'

小弟也是把这个sql拿到数据库执行了一遍结果是:

可见,sql语句没什么问题,但是jdbc执行了之后,插入到数据库的就是中文乱码;

另外,下面这张图是我本地mysql的编码格式:

 

 

 

 

 

 

 

易猜的主页 易猜 | 初学一级 | 园豆:136
提问于:2015-12-03 00:53
< >
分享
最佳答案
0

页面GBK,servelet iso-8859-1【对中文是无法处理的】,mysql utf-8,这样处理编码有点乱

最好统一成utf-8,页面设置为utf-8,servlet在配置中设置为utf-8,mysql的连接串设置utf-8,这样统一为一个一般就没有乱码了

收获园豆:20
2012 | 高人七级 |园豆:21445 | 2015-12-03 09:15

我会按照你那么尝试一次;

但另一个疑问是,后台输出sql语句已经可以显示中文,为什么jdbc请求到mysql就变成乱码?

易猜 | 园豆:136 (初学一级) | 2015-12-03 22:38

@易猜: jdbc配置的数据库连接串编码和数据库的编码不一致会造成jdbc请求到mysql乱码

2012 | 园豆:21445 (高人七级) | 2015-12-04 09:42
其他回答(3)
0

你的SQL怎么没问题了? ,author = '???',press = '????' 

之奇一昂 | 园豆:1421 (小虾三级) | 2015-12-03 08:19

我只测试了name ,type字段,其他字段数据库本来就是问好乱码;

支持(0) 反对(0) 易猜 | 园豆:136 (初学一级) | 2015-12-03 22:13

@易猜: 能设置的地方都弄成UTF-8吧,省事儿

支持(0) 反对(0) 之奇一昂 | 园豆:1421 (小虾三级) | 2015-12-03 22:38
0

统一设置为utf-8试试~

幻天芒 | 园豆:37205 (高人七级) | 2015-12-03 08:52

如果真的解决不了,我只能按照你说的了;

只是,后台可以打印出中文,我为jdbc存储mysql仍然乱码,非常恼火;

支持(0) 反对(0) 易猜 | 园豆:136 (初学一级) | 2015-12-03 22:14

@易猜: 这可能是你的mysql编码和页面编码不一致导致的。

支持(0) 反对(0) 幻天芒 | 园豆:37205 (高人七级) | 2015-12-04 08:38
0

统一设置编码为 utf-8

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>

request.setCharacterEncoding("utf-8");

也可以在配置文件中统一设置

Kencery | 园豆:357 (菜鸟二级) | 2015-12-03 09:27
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册