一、若是提交方式为post,想不乱码,只须要在服务器端设置request对象的编码便可,客户端以哪一种编码提交的,服务器端的request对象就以对应的编码接收,好比客户端是以UTF-8编码提交的,那么服务器端request对象就以UTF-8编码接收(request.setCharacterEncoding("UTF-8")) 数组
二、若是提交方式为get,设置request对象的编码是无效的,request对象仍是以默认的ISO8859-1编码接收数据,所以要想不乱码,只能在接收到数据后再手工转换,步骤以下: 服务器
1).获取获取客户端提交上来的数据,获得的是乱码字符串,data="???è?????" post
String data = request.getParameter("paramName"); 编码
2).查找ISO8859-1码表,获得客户机提交的原始数据的字节数组 spa
byte[] source = data.getBytes("ISO8859-1"); 对象
3).经过字节数组以指定的编码构建字符串,解决乱码 字符串
data = new String(source, "UTF-8"); get
经过字节数组以指定的编码构建字符串,这里指定的编码是根据客户端那边提交数据时使用的字符编码来定的,若是是GB2312,那么就设置成data = new String(source, "GB2312"),若是是UTF-8,那么就设置成data = new String(source, "UTF-8") 字符编码