controller接收前台数据乱码

乱码的原因是前台是utf-8方式编码,而tomcat默认是iso-8859-1方式解码的所以会乱码

post请求乱码

一般使用的话,加上过滤器,再把tomcat配置文件改了就可以了.

方式一,在web.xml中加过滤器

<filter>
    <filter-name>characterEncoding</filter-name>
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
    <init-param>
        <param-name>encoding</param-name>
        <param-value>UTF-8</param-value>
    </init-param>
    <init-param>
        <param-name>forceEncoding</param-name>
        <param-value>true</param-value>
    </init-param>
</filter>
<filter-mapping>
    <filter-name>characterEncoding</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

方式二,设置请求头编码格式,设置完之后,直接使用就可以了

//分页查询所有公司用户信息
@RequestMapping("/findAllUserManagerMsg")
@ResponseBody
public BootStrapResult findAllUserManagerMsg(HttpServletRequest request, BootTableParam param, String corporateName, String iphone){
    try {
        request.setCharacterEncoding("utf-8");
    } catch (UnsupportedEncodingException e) {
        e.printStackTrace();
    }

}

只对get请求方式有效 

打开tomcat安装路径,进入conf,编辑打开server.xml,然后在65行左右,找到设置端口号的地方,加上URIEncoding="utf-8",就可以了,这样就是把tomcat默认解码方式改为utf-8了

get,post请求都有效

把字符串按照iso-8859-1方式编回去再按utf-8解码

把字符串转码

@RequestMapping("/findAllUserManagerMsg")
@ResponseBody
public BootStrapResult findAllUserManagerMsg(BootTableParam param,String corporateName,String iphone){
    try {
        corporateName = new String(corporateName.getBytes("iso-8859-1"),"utf-8");
        iphone = new String(iphone.getBytes("iso-8859-1"),"utf-8");
    } catch (UnsupportedEncodingException e) {
        e.printStackTrace();
    }
    BootStrapResult result = witkeyUserService.findAllUserManagerMsg(param,corporateName,iphone);
    return  result;
}

 

猜你喜欢

转载自blog.csdn.net/kxj19980524/article/details/84767371