乱码问题出现的根本原因是:编码与解码不一致
场景描述:
客户端:浏览器jsp或者html表单
服务端:servlet
操作:浏览器在表单中通过GET或者POST方式提交中文至服务器,服务器收到的是乱码
原因分析:
浏览器向服务端发送中文,所使用码表必须能够解码中文。假设jsp或者html使用的是utf-8的编码方式提交
那出现乱码的原因就是服务端解码失败(服务端默认的解码方式为iso8859-1)引起
解决方案:
如果是POST方式提交,那么提交内容在请求体中,因此使用下面的代码告知服务端请求体的解码方式即可
request.setCharacterEncoding(“utf-8”);
如果是GET方式提交,那么提交内容附加在URL中,因此需要手动解码
String value =new String(request.getParameter(“xxx”).getByte(“iso8859-1”),”utf-8”);
(先拿到默认编码iso8859-1的二进制值,再通过utf-8的解码方式找到对应的中文)