日期:2014-05-19  浏览次数:20652 次

Servlet从jsp页面读取数据乱码
在Servlet里面从jsp表单里读取数据,结果读出来的中文全是乱码。

在jsp里面的编码设置时<%@page pageEncoding="utf-8" contentType="text/html; charset=utf-8"%>

在Servlet里面也对编码设置了 request response 都有设置成utf-8

中间的传参是 function autoComplete() {
var xhr = new XMLHttpRequest();
var url='auto?item='+document.getElementById('content').value;
请大虾指教一下

------解决方案--------------------
加上
<meta http-equiv="content-type" content="text/html; charset=utf-8">
试试看

以及加上一个EncodingFilter试试看
public class CharacterEncodingFilter implements Filter {
------解决方案--------------------
可以先设置一下
request.setCharacterEncoding("gb2312");
或者utf-8
然后再获取.
------解决方案--------------------
楼主的问题我也遇到过 。有很多答案 。
1 :tomcat 下的server.xml 
 <Connector port="8080" protocol="HTTP/1.1" 
connectionTimeout="20000" URIEncoding="UTF-8"
redirectPort="8443" />
2:其次就是页面了 :
<%@ page contentType="text/html; charset=utf-8" language="java" import="java.util.*" errorPage="" %>

3:你可以自己传值时debud调试下
------解决方案--------------------
再看看你是不是用Get方法提交的,若是的,改成post试试……
------解决方案--------------------
探讨
楼主你是Ajax传的中文吧?
js这样写,比如传中文张三

JScript code

var a=encodeURI(encodeURI('张三'));
xmlhttp.open("get", "/Text/test.do?x=test&amp;aa=" + a, true);


servlet这样接受

Java code

String name = URLDec……

------解决方案--------------------
有时候是浏览器的问题。解决的问题有很多。
例如:
1.#4所说的那样。
2.加一个过滤器。
Java code
/**
 * 
 */
package com.wycong.epet.filter;

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 CharsetFilter implements Filter {//建一个类实现接口Filter 

    public void destroy() {
        // TODO Auto-generated method stub

    }

    public void doFilter(ServletRequest request, ServletResponse response,
            FilterChain filter) throws IOException, ServletException {
        request.setCharacterEncoding("gbk");
        response.setCharacterEncoding("gbk");
        response.setContentType("text/html;charset=gbk");
        filter.doFilter(request, response);
    }

        public void init(FilterConfig arg0) throws ServletException {
        // TODO Auto-generated method stub

    }

}