集成环境本地编码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的编码格式:
页面GBK,servelet iso-8859-1【对中文是无法处理的】,mysql utf-8,这样处理编码有点乱
最好统一成utf-8,页面设置为utf-8,servlet在配置中设置为utf-8,mysql的连接串设置utf-8,这样统一为一个一般就没有乱码了
我会按照你那么尝试一次;
但另一个疑问是,后台输出sql语句已经可以显示中文,为什么jdbc请求到mysql就变成乱码?
@易猜: jdbc配置的数据库连接串编码和数据库的编码不一致会造成jdbc请求到mysql乱码
你的SQL怎么没问题了? ,author = '???',press = '????'
我只测试了name ,type字段,其他字段数据库本来就是问好乱码;
@易猜: 能设置的地方都弄成UTF-8吧,省事儿
统一设置为utf-8试试~
如果真的解决不了,我只能按照你说的了;
只是,后台可以打印出中文,我为jdbc存储mysql仍然乱码,非常恼火;
@易猜: 这可能是你的mysql编码和页面编码不一致导致的。
统一设置编码为 utf-8
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
request.setCharacterEncoding("utf-8");
也可以在配置文件中统一设置