在tomcat6中,我用表单用get方法提交,但如果其中表单参数有中文,提交后接受到的就为就为乱码,
我以前采取的解决方式是打开tomcat的server.xml文件,找到区块,加入如下一行:URIEncoding=”utf-8” >
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" URIEncoding=”utf-8”/> 这样写是完全可以把问题解决的,但是租服务器的公司不让改动它们的tomcat的任何配置,请问各位怎么办???
注:因为我们要取到get方法提交的url,所以不能换成post方法,请问各位前辈,在不用改tomcat配置和仍热用get方法情况下,是否有其他中文乱码的解决办法,小弟急呀~~
我以前采取的解决方式是打开tomcat的server.xml文件,找到区块,加入如下一行:URIEncoding=”utf-8” >
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" URIEncoding=”utf-8”/> 这样写是完全可以把问题解决的,但是租服务器的公司不让改动它们的tomcat的任何配置,请问各位怎么办???
注:因为我们要取到get方法提交的url,所以不能换成post方法,请问各位前辈,在不用改tomcat配置和仍热用get方法情况下,是否有其他中文乱码的解决办法,小弟急呀~~
在接受页面使用 <%=request.getParameter("project_id") %>
<%=new String(request.getParameter("projectName").getBytes("ISO-8859-1"),"GBK")%>
因为projectName是汉字所以要进行编码转换,jsp页面传递的时候是使用的ISO-8859-1。
到处都是这个问题
Csdn就是为了解决乱码问题而存在的吗?
URLEncoder.encode(String,"GBK"))
URLDecoder.decode(String,GBK")
很麻烦,或者如楼上说的,用过滤器
"ISO8859-1"), "GBK");
或
request.setCharacterEncoding("ISO8859-1");
ad=request.getParameter("name");
byte[] temp3 = ad.getBytes("GBK");
String str = new String(temp3);
这样就是中文啦!
login_name = encodeURI(login_name);
login_name = encodeURI(login_name);
2、在服务器端对参数进行解码 String loginName = ParamUtil.getString(request, "login_name");
loginName = java.net.URLDecoder.decode(loginName,"UTF-8"); 具体请见http://blog.csdn.net/Seven_23/archive/2009/09/02/4510670.aspx
JSP:
var url = "<%=request.getContextPath()%>/TestEncodeAction.do?dispatch=encode¶m=";
url += encodeURIComponent("中文值");
var form = document.forms[0];
form.action = url;
form.submit();TestEncodeAction.encode
String param = new String(request.getParameter("param").getBytes("ISO-8859-1"), "UTF-8");
System.out.println("param is: " + param);Console:
param is: 中文值
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;public class EncodeFilter implements Filter {
public void destroy() {
}
public void doFilter(ServletRequest arg0, ServletResponse arg1,
FilterChain arg2) throws IOException, ServletException {
arg0.setCharacterEncoding("utf-8");
arg2.doFilter(arg0, arg1);
arg1.setCharacterEncoding("utf-8"); }
public void init(FilterConfig arg0) throws ServletException {
// TODO Auto-generated method stub }}
上面是一个过滤器,然后再web.xml里面定义
<filter>
<filter-name>encodeFilter</filter-name>
<filter-class>common.EncodeFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>encodeFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
我觉得这个还蛮好用,但是编码格式要统一
一般GBK转ISO-8859-1码
在客户端进行2次编码(1次可能依然会有乱码问题)
在服务器进行1次解码
注意的是2端得编码要保持一致,UTF-8或者GBK