一、概述
出现乱码是非常简单的一件事,就是服务器和客户端没有用同一种解码和编码方式导致的。这里密切关注:myeclipse下的服务器默认的解码方式是iso8859-1,所以不管客户端提交的是什么编码形式的,就必需要经过解码。
二、服务器返回数据出现乱码(两个办法)
方法一、服务器端指定某一种编码类型,来返回数据
response.getOutputStream().write("登陆失败".getBytes("utf-8"));
方法二、客户端使用与服务器一样的编码类型来解码字符串。
myeclipse中默认使用的是GBK,我们用GBK来解码就可以了。
String res=bos.toString("GBK");
三、客户端提交数据出现乱码(两个步骤)
客户端要修改中文的数据编码,使用URLEncoder.encode对中文进行编码
String path = "http://10.0.2.2:8080/day05/LoginServlet?name="+name+"&pwd="+URLEncoder.encode(pwd, "utf-8");
服务器拿到数据之后,要让其回到最初的状态,然后再使用UTF-8(客户端指定的编码类型)来进行解码
//这里收到的字符串,默认就是用的是ISO-8859-1来进行解码了,所以这里一定会出现乱码 String pwd = request.getParameter("pwd"); System.out.println("userName="+name +"---pwd="+pwd); pwd = new String(pwd.getBytes("ISO-8859-1") , "utf-8"); System.out.println("userName="+name +"-编码后的--pwd="+pwd);