jsp1
<a href="/jsp2?name='管理员'" />管理员
jsp2
<%
 String name = request.getParameter("name")
%>
name 是乱码,为什么?怎么解决

解决方案 »

  1.   

    你用的是什么服务器?如果是tomcat的话,那你在server.xml的配置文件中把Connector的那个节点元素加一个:URIEncoding="gbk"这样就可以了。
      

  2.   

     String name = request.getParameter("name")
    name = new String(name.getByte("iso-8859-1"),"utf-8")
      

  3.   

    Tomcat 6.0\conf\server.xml 里面有个Connector节点。按照一楼讲的改下试试。
    也可以直接在程序里面转换name=new String(name.getBytes("ISO-8859-1"),"GBK")
      

  4.   

    name=new String(name.getBytes("ISO-8859-1"),"GBK")这个转换后管理员的“员”还是乱码
      

  5.   

    有两个Connector节点,加在那个上啊 ?
      

  6.   

    统一编码方式,可采用过滤器处理乱码
    public class Filter implements javax.servlet.Filter { public void destroy() {
    // TODO Auto-generated method stub } public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
    request.setCharacterEncoding("utf-8");
    response.setContentType("text/html; charset=utf-9");
    chain.doFilter(request, response); } public void init(FilterConfig arg0) throws ServletException {
    // TODO Auto-generated method stub }}
    在web.xml里配置一下就可以了,这样整个项目都可以同用,我一般这样就可以处理基本的乱码问题,除非是数据库乱码另算,一般的页面传值应该可以处理,lz可试试
      

  7.   

    老兄,你在学习的时候,没有人提醒你,不要用 GET 方式传中文么?
    公司开发应该也不允许你用 GET 方式传中文吧
    A 标签中传值,JS 的 location 的 href 属性传值 以及 Form 表单的 action 设为 get 都是一样的
    传中文都一样会乱码,一般,你写个其它参数代替一下好了,如果是类型,你给个数字就好了,
    如果是实体中的数据,你最好还是传ID,要实在想传中文 那转为 十六进制编码或 Unicode 编码再传吧
      

  8.   

    刚才那个写错了,是Form 的 method 为 GET
      

  9.   

    找了一下,你看一 JScript 内置函数
    encodeURI(URIStr) 方法 或 escape(charString) 方法
    这两个方法都可以对 中文进行转换
    <script language="javascript">
    function frd(type){
    var param = encodeURI(type);
    location.href="/jsp2?name=" + param ;
    }
    </script>jsp1
    <a href="javascript;" onclick="frd('管理员')" >管理员</a>
    jsp2
    <%
     String name = request.getParameter("name")
     name = new String(name.getByte("iso-8859-1"),"utf-8")
    %>
      

  10.   

    request.setCharacterEncoding("");""里面是你页面的pageEncoding
      

  11.   

    其实编码一直是java里面的一个问题,跟前台页面的编码有关,跟服务器地址编码有关,跟后台jsp文件编码也有关系,如果哪一个地方处理不好都不能解决问题,于是有一套自己的编码与解码方法是可行的前台编码:在get提交前先把要提交的内容encodeURIComponent(),保证把特殊字符转掉,然后再用@replace一下%在java代码里面,获取到这个参数先replace一下@然后再decodeURI();具体实现方式如下:前台页面:
    <a href="###" onclick="myEncode('管理员')" />管理员/jsp2?name=''
    <script>
        function myEncode(str){
           str = generateUrl(encodeURIComponent(str));
           location.href="/jsp2?name=" + str;
        }
    function generateUrl(url){
    url = encodeURIComponent(url);
    url = url.replace(new RegExp('%','gm'),"@");
    return url;
    }
    </script>jsp页面:
    String name = request.getParameter("name");name = java.net.URLDecoder.decode(name.replaceAll("@", "%"), "utf-8");
    目前这个方法无论服务器编码,无论页面编码,无论java代码是何编码都是可行的