hcr526 2009-10-30 14:21
浏览 221
已采纳

关于jsp表单提交乱码问题,谢谢!

我是一个新手,最近在tomcat6.0+MyEclipse6.5+MSSQL2000下开发一个网站,可是不知道为什么form表单提交的中文数据出现乱码(我是在MyEclipse控制台下看到提交的数据是乱码的)。当然保存到数据库中也变成了乱码。项目统一采用UTF-8编码。各位大侠帮我看一下到底出了什么问题:
这是我的JSP文件头:
<%@ page contentType="text/html; charset=UTF-8" language="java"
import="java.util.*" pageEncoding="UTF-8" errorPage=""%>
均设置了UTF-8编码。
同时我还写了一个过滤器:SetCharacterEncodingFilter
package d8city.jskr.EncodingFilter;
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;

public class SetCharacterEncodingFilter implements Filter {
protected String encoding = null;
protected FilterConfig filterConfig = null;
protected boolean ignore = true;

public void destroy() {
    this.encoding = null;
    this.filterConfig = null;
}

public void doFilter(ServletRequest request, ServletResponse response,
        FilterChain chain) throws IOException, ServletException {
    if (ignore || (request.getCharacterEncoding() == null)) {
        String encoding = selectEncoding(request);
        if (encoding != null) {
            request.setCharacterEncoding(encoding);
        }
    }
    chain.doFilter(request, response);
}

public void init(FilterConfig filterConfig) throws ServletException {

    this.filterConfig = filterConfig;
    this.encoding = filterConfig.getInitParameter("encoding");
    String value = filterConfig.getInitParameter("ignore");
    if (value == null) {
        this.ignore = true;
    } else if (value.equalsIgnoreCase("true")) {
        this.ignore = true;
    } else if (value.equalsIgnoreCase("yes")) {
        this.ignore = true;
    } else {
        this.ignore = false;
    }
}

protected String selectEncoding(ServletRequest request) {
    return (this.encoding);
}

}
web.xml下面也进行了相关配置:

Set Character Encoding

d8city.jskr.EncodingFilter.SetCharacterEncodingFilter


encoding
UTF-8


ignore
true



Set Character Encoding
/*

是不是我还有什么没有进行配置,提交的中文数据总是出现乱码。谢谢各位了,这问题已经缠了我几天了,
同时,我吧页面的编码全部改成gb2312后提交的数据便是中文。这是为什么。

  • 写回答

7条回答 默认 最新

  • cebuleo 2009-10-31 14:36
    关注

    [b]那要看你用什么方式提交的,如果是get方式,就算写Filter也不行,因为Filter针对的是post方式提交的数据,而get方式就不行了,如果用get方式必须要转码.建议用post方式。[/b]

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(6条)

报告相同问题?

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器