tomcat中文乱码问题

今天做项目遇到了中文乱码的问题,之前都是按照常规方法去用,但是试了几次后发现都没成功,后来请教别人才解决了,主要是自己对tomcat产生乱码的原理没有搞清楚,所以打算记录一下。

1.tomcat为什么会产生乱码?

tomcat默认是按照ISO-8859-1编码的,该种编码方式不支持中文,所以当发送get请求时且路径中有中文参数的时候就会出现中文乱码。

2.当时按照方法一处理的,但是就是不好使

处理方法一:

js 程序代码:url=encodeURI(url);注意是整个URL
服务器端的代码:String linename = new String(request.getParameter("name").getBytes("ISO-8859-1"),"UTF-8");

处理方法二:

js:var url="name="+name;
url=encodeURI(encodeURI(url)); //用了2次encodeURI
window.location = "<%=path%>/inner/line/line.jsp?"+url;
服务器端的代码:
String linename = request.getParameter(name);
//java : 字符解码
linename = java.net.URLDecoder.decode(linename , "UTF-8");

3.这里需要说明的是我当时的那个方法被好几个地方请求了,也就是说有好几处都请求了这个资源,有的方式是post,有的方式是get,而我在转码的时候却没有区分,导致post请求时乱码了(post请求时不需要转)。

所以我在原来解码的基础上加了一个请求方式的判断:if(request.getMethod.equals("GET"))问题就解决了。


猜你喜欢

转载自blog.csdn.net/weixin_40655220/article/details/79174527