jsp页面中文乱码的解决情况

首先注意在页面标签中声明好编码格式

<%@ pagecontentType="text/html;charset=utf-8"pageEncoding="UTF-8"%>

一般来说,客户端向服务器端传递数据都是通过request(要注意这个request的生命周期,下一次请求意味着另一个request,需要再次设置),可以为这个request设置一下编码格式request.setCharacterEncoding("UTF-8");

注意:P1->P2->P3需要在p2和p3中都设置一遍

request.setCharacterEncoding("UTF-8");

 

<jsp:forwardpage="p2.jsp">

           <jsp:paramname="userName"value="瑞莎"/> </jsp:forward>

(Loop after forward

       则有些不同 ,需要在p1中的request设置utf-8,这点不是很理解,难道是和forward的特性有关,

上面三页面传值出现了三次请求,而如果使用forward的话,只会出现一次请求,同时代码的执行顺序是从forward进去,(Loop afterforward)这些代码都不会执行了。同时请求仍然是一个。

String username2 =newString(username.getBytes("ISO8859_1"),"UTF-8");

setCharacterEncoding不起作用?

setCharacterEncoding只针对post 而get还是使用的tomcat配置的默认编码方式

解决的方法有三个: 
1.  将GET请求改成POST请求,然后就可以使用request.setCharacterEncoding方法设置编码,并使用request.getParameter方法直接获得中文请求参数了。 
2.  不用改GET请求,在Servlet中使用如下的代码来得到中文请求参数。 
String name = newString(request.getParameter("name").getBytes("ISO-8859-1"),"GBK"); (ISO-8859-1是tomcat的默认编码,如果做过修改,这里也要相应的修改
3.为了保证get数据采用UTF8编码,在server.xml中进行了如下设置 
<connector port="8080"maxthreads="150" minsparethreads="25"<br="">maxSpareThreads="75"enableLookups="false" redirectPort="8443" 
acceptCount="100"debug="99" connectionTimeout="20000" 
disableUploadTimeout="true" URIEncoding="UTF-8"/> 

Ps: 如果是使用myeclipse的自带的tomcat,则它的配置路径是X:\Workspace\.metadata\.me_tcat\conf

原文地址:https://www.cnblogs.com/suijing/p/3379403.html