日期:2014-05-18  浏览次数:20640 次

jsp页面之间传值中文乱码
index.jsp页面内容:
<%@   page   language= "java "   import= "java.util.* "   pageEncoding= "GB2312 "%>
<form   action= "b.jsp ">
        name: <input   type=text   name=name>
        <input   type=submit>
</form>

b.jsp页面内容:
<%@   page   language= "java "   import= "java.util.* "   pageEncoding= "GB2312 "%>
<%
    String   name=request.getParameter( "name ");
%>
<body>
        <%=name%>
</body>


\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
当我在表单上输入中文时,b.jsp页面显示就是乱码.

各种方法都试了,都不好用.除非:
String   name=new   String(request.getParameter( "name ").getBytes(), "GB2312 ");
好用.
但是网上还有朋友都没有用这种转换的方法,他么都是用过滤器就好用.可是我怎么样都不好用




------解决方案--------------------
如果请求的参数过多,使用起来代码显得臃肿。既然你用的是Tomcat,这个问题tomcat已经实现了一个转换中文的过滤器,配置起来也相当简单。
源码如下:
/*
* Copyright 2004 The Apache Software Foundation
*
* Licensed under the Apache License, Version 2.0 (the "License ");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS " BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

package filters;


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;
import javax.servlet.UnavailableException;


/**
* <p> Example filter that sets the character encoding to be used in parsing the
* incoming request, either unconditionally or only if the client did not
* specify a character encoding. Configuration of this filter is based on
* the following initialization parameters: </p>
* <ul>
* <li> <strong> encoding </strong> - The character encoding to be configured
* for this request, either conditionally or unconditionally based on
* the <code> ignore </code> initialization parameter. This parameter
* is required, so there is no default. </li>
* <li> <strong> ignore </strong> - If set to "true ", any character encoding
* specified by the client is ignored, and the value returned by the
* <code> selectEncoding() </code> method is set. If set to "false,
* <code> selectEncoding() </code> is called <strong> only </strong> if the
* client has not already specified an encoding. By default, this
* parameter is set to "true ". </li>
*