jsp form post 提交乱码

整个项目采用的UTF-8编码 form用get提交正常 post提交到tomcate时就是乱码了
jsp 页面保存为UTF-8
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<form name="recAddrForm" action="cosmos.slet?" method="post">..又带有中文的输入...</form>无插件
tomcat
<Connector port="8080"...URIEncoding="UTF-8"/>
<Connector port="8009" ... URIEncoding="UTF-8"/>
web.xml
filter 设置编码为UTF-8
<filter>
<filter-name>encoding</filter-name>
<filter-class>com.microbrain.cosmos.web.filters.EncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>

顺便问下这与apache有关系么

第1个回答  2009-02-12
wjjcml1982 - 助理 二级说的对 照他那样改 还有一个办法
就是像 kalier - 见习魔法师 三级 写个过滤器

package com.common.web;

import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;

/**
* 过滤器 处理乱码
* 杨悦 2009.01.20
* @author yy
*
*/
public class CharFilter implements Filter {

public void destroy() {

}

public void doFilter(ServletRequest request, ServletResponse response,FilterChain chain) throws IOException, ServletException {
request.setCharacterEncoding("gbk");
chain.doFilter(request, response);

}

public void init(FilterConfig filterConfig) throws ServletException {

}

}

然后在web.xml加下配置:

<!--
在这里声明一个过滤器 为他指定名字为charFilter 指定的类是
com.common.web.CharFilter
-->
<filter>
<filter-name>charFilter</filter-name>
<filter-class>com.common.web.CharFilter</filter-class>
</filter>
<!--
在这里设置上面声明的过滤器的过滤的范围
filter-name 过滤器的名字 就是声明的那个
url-pattern 范围 /*是所有
-->
<filter-mapping>
<filter-name>charFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

这样就不怕了
另外 过滤器还可以查看当前用户登陆状况 Session 是否存在等 具体的可以在过滤器那个类中改 如果不符合条件自动跳转到指定页 希望对你有帮助本回答被提问者采纳
第2个回答  2015-12-16
转码可以在页面中或是sevlet以及过滤都可以解决的,下面以页面和servlet为例:
方法一:设置 request 和 response 的编码 [ 页面编码必须为 u8 ]
request.setCharacterEncoding("UTF-8");//传值编码
response.setContentType("text/html;charset=UTF-8");//设置传输编码
方法二:
String str1=传来的数据。
String ss=new String(str1.getBytes("ISO-8859-1"),"utf-8"); //转码UTF8
第3个回答  2009-02-12
1) 更改 D:\Tomcat\conf\server.xml,指定浏览器的编码格式为“简体中文”:

方法是找到 server.xml 中的

<Connector port="8080" maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
connectionTimeout="20000" disableUploadTimeout="true" URIEncoding='GBK' />

标记,粗体字是我添加的。

可以这样验证你的更改是否成功:在更改前,在你出现乱码的页面的IE浏览器,点击菜单“查看|编码”,会发现“西欧(ISO)”处于选中状态。而更改后,点击菜单“查看|编码”,会发现“简体中文(GB2312)”处于选中状态。

b)更该 Java 程序,我的程序是这样的:

public class ThreeParams extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html; charset=GBK");
...
}
}
第4个回答  2009-02-12
一般get出问题的较多,你却相反,首先乱码的出现根本原因就是发送和接收时使用的编码不一致,你仔细检查一下,页面的编码,和接收用的编码。TOMCAT也可以设置编码的,不过那个主要是用来解决GET请求乱码的,一般POST很少出现乱码的。
第5个回答  2009-02-12
写一个fitter来统一编码。 我是手机手打的 希望对您有帮助,有疑问的话我们保持联系。
相似回答