在学egov是,浏览器上发送的请求到服务器,在servlet中获取表单中的数据时,出现了中文乱码的问题。
1、这里的 jsp 页面中的编码方式设置为UTF-8,表示在浏览器端页面的编码方式式UTF-8,发送的数据也是UTF-8的形式。 而在servlet中接送数据时设置的编码方式为GBK,所以出现乱码:百度-鐧惧害
2、解决设置servlet中获取浏览器编码方式为UTF-8,即可。
3、在jsp中设置编码方式为UTF-8,servlet不设置,默认是utf-8的方式接收【idea的编码设置为GBK】的乱码为:百度 - ç¾åº¦
总结如下:
jsp:UTF-8 ,servlet不设置,乱码:百度 - ç¾åº¦
jsp:GBK /GB18030, servlet不设置,乱码:百度 - °Ù¶È
jsp UTF-8, servlet :GBK, 乱码:百度-鐧惧害
解决:
jsp:UTF-8, servlet :UTF-8 ,不乱码
jsp:GBK/GB18030 , servlet :GBK /GB18030 , 不乱码
4、浏览器发送get请求,使用idea工具,serlvet接收乱码时,解决:
String username=request.getParameter("username");
byte[] bytes = dname.getBytes("ISO-8859-1");//解码
username = new String(bytes, "GBK");//编码,这里的编码方式和idea工具中设置的编码方式一致
结合:
String username = new String(request.getParameter("username").getBytes("ISO-8859-1"),"GBK");
5、浏览器发送post请求,使用idea工具,serlvet接收乱码时,解决:
request.setCharacterEncoding("utf-8");//这里和浏览器页面采用的编码方式一致,和idea工具编码方式无关
6、通过url发送请求乱码时:
在学习jstl时,发现使用S{param.username}和<%=request.getParameter("username)%>时获取的中文乱码,修改了E:\Java-software\apache-tomcat-9.0.30\conf下面的server.xml 设置为utf-8中文不乱码了,设置为GB18030时乱码,不知什么原因。