乱码,怎么破

用纯Servlet:

在Server端要如此接收中文参数:new String(request.getParameter("name").getBytes("ISO8859-1"),"UTF-8")

如何解决仅用request.getParameter("name")就可以正确接收

iteye_12390
iteye_12390 破,只需要用锤子。
6 年多之前 回复

6个回答

楼上正解,不过因为是纯servlet,估计也没用spring,不过好在spring开源,可以下载源码,把这个filter类单独拿出来用,就ok了。

sunships
sunships "每次都是凑合着改对就ok了" 我觉得也只能这样了。感谢
6 年多之前 回复
h248980496
h248980496 一般乱码都是存在于method=get中的,页面请求到servlet后台有4次字符集,分别是页面(用servlet相信你应该是jsp,jsp文件本身的字符集),页面头(页面的头部定义的字符集),web容器的字符集(一般用tomcat的话,配置文件里面有相关配置),以及servlet类的字符集,如果能够全部使用同一种字符集,将不会有问题,如果当中不是统一的,就可能有问题(不是百分百),感觉前三处如果都能设置一下,应该可以解决问题。其实中文问题一直很困扰,每次都是凑合着改对就ok了,从来没有很理性逻辑的分析过。。希望能帮到你
6 年多之前 回复
sunships
sunships 一般都是类中再导其它工具类,单独拿出来用是比较麻烦的事。然后我这个仅是 request.setCharacterEncoding(xx)下仍是乱码,再看问题,你可明白个中意味,请不吝赐教有何好法。。。
6 年多之前 回复

在web.xml中添加个Filter转码

[code="xml"]

Set Character Encoding
org.springframework.web.filter.CharacterEncodingFilter

encoding
utf-8



Set Character Encoding
/*

[/code]

应二楼要求,贴spring的源码出来。
[code="java"]

package org.springframework.web.filter;

import java.io.IOException;
import javax.servlet.FilterChain;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class CharacterEncodingFilter extends OncePerRequestFilter {

private String encoding;

private boolean forceEncoding = false;



public void setEncoding(String encoding) {
    this.encoding = encoding;
}


public void setForceEncoding(boolean forceEncoding) {
    this.forceEncoding = forceEncoding;
}


@Override
protected void doFilterInternal(
        HttpServletRequest request, HttpServletResponse response, FilterChain filterChain)
        throws ServletException, IOException {

    if (this.encoding != null && (this.forceEncoding || request.getCharacterEncoding() == null)) {
        request.setCharacterEncoding(this.encoding);
        if (this.forceEncoding) {
            response.setCharacterEncoding(this.encoding);
        }
    }
    filterChain.doFilter(request, response);
}

}
[/code]

pengchang_1981
pengchang_1981 这段源码逻辑是如果forceEncoding 为true的条件下,还要把response.setCharacterEncoding(this.encoding);
6 年多之前 回复
sunships
sunships 这个作用只是request.setCharacterEncoding(this.encoding)一下?
6 年多之前 回复

情况一 action method="get";中文就会乱码;你把method="post"

用servlet自己写一个过滤器。就行了1

写过滤器 可破

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!