原文:在設置完這個后,居然有一個漢字可以顯示了出來,但其它的漢字顯示成為了一個方框(不解)!原因:还是乱码,只是刚巧那2个字符组成的编码是个汉字。原文:<a href="xxxx.jsp?productName=${param.productname}">bbbb </a>办法:
1.取得productName属性转码;
2.用ISO-8859-1转码。

解决方案 »

  1.   

    试试这个步骤:
    1、去掉<Connector>中 URIEncoding="UTF-8"的配置
    2、确保<a href="xxxx.jsp?productName=${param.productname}">bbbb</a>所在页面的编码为UTF-8
    3、在xxxx.jsp写如下代码获取请求值:
    String productName = request.getParameter( "productName" );
    productName = new String( productName.getBytes("ISO-8859-1"), "UTF-8" );
    System.out.println( productName );
    此时,如果控制台上输出的是乱码,说明我之前的步骤不可行。
    如果控制台上输出正确的中文,而页面上看到的是乱码,则请将xxxx.jsp的页面编码改为UTF-8PS:
    设置JSP页面编码的方法
    1、
    <%@ page contentType="text/html;charset=UTF-8" %>
    2、
    <%@ page pageEncoding="UTF-8" %>
      

  2.   

    不太清楚,但是可以用JS
    encodeURI(${param.productname})
      

  3.   

    jsp初步页面传递中的中文乱码处理非常简单的传递过程
        <form action="test.jsp">
            username : <input type="text" name="username" />
            <br />
            <input type="submit">
        </form>
        也就是输入框传值.
        test.jsp中主要代码为:
            Hello <%=request.getParameter("username")%>
        这样不可能出现乱码的因为这里面没出现中文。
        如果改成这样:
        <form action="test.jsp">
            用户名 : <input type="text" name="username" />
            <br />
            <input type="submit">
        </form>
        这样就会在这个页面出错用户名那里就会出现乱码。
        这里分析下出现乱码的原因:
        主要有请求和响应中可能出现的乱码。
        所谓响应中的乱码,就是显示页面上的乱码,因为页面数据是从服务器一端放入响应(response)中,然后发
        送给浏览器,如果响应中的数据无法被正常解析,就会出现乱码问题。
        为什么英文就没有问题呢?因为在iso-8859-1,gb2312, utf-8以及任意一种编码格式下,英文编码格式都
        是一样的,每个字符占8位,而中文就麻烦了,在gb2312下一个中文占16位,两字节,而在utf- 8下一个中
        文要占24位,三字节。浏览器在不知道确定编码方式的情况下,就会把这些字符从中间截断,再显示的时
        候就乱掉了。所以,想要解决乱码问题,就是要告诉浏览器我们到底使用了什么样的编码方式。
        解决方法:
        #因为服务器要先从本地读取jsp文件,然后经过处理后写入响应,所以我们首先要知道的就是jsp文件的编
        码格式。从问题的源头着手解决。在咱们用的windowxp下,文件默认的编码格式是gb2312。
        #我们要在http的响应(response)中添加编码信息,使用如下方式:
        <%@ page contentType="text/html; charset=gb2312"%>
        #我们还需要在html中指定编码格式。
        <head>
        <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
        <title>title</title>
        </head>
        meta部分用来指定当前html的编码格式,注意这一段要放在head标签中,并且放到head标签的最前面,如果
        不是最前面ie下可能会出现问题,尤其是在title中有中文的情况下。
        **在完成了以上三个#好面的检验设置后,基本上能保证得到正确的中文显示了。
        下面传到另外的页面也会产生乱码:我们的表单也就是form传递会有两种方式POST和GET,默认方式GET
        在POST方式下面只要在接受的jsp页面上设置请求的字符编码就可以了如下:
        <%
            request.setCharacterEncoding("gb2312");
        %>
        但是在 GET方式下面就不管用了上面的方法,这样我们只有对每个中文进行转换了,使用new String
        (bytes, "gb2312")进行转码。如下方式:
        <%
            String username = request.getParameter("username");
                byte[] bytes = username.getBytes("iso-8859-1");
            String result = new String(bytes, "gb2312");
            out.print(result);
        %>
            这样处理过程就是,先从request中获得参数,接着把字符串按照iso-8859-1编码打散成byte数组,然后
        用gb2312编码组合成新字符串,最后打印出来就是正常的中文了。    **也可以写成一串如下:
        <%=new String(new String(request.getParameter("username").getBytes("iso-8859-1"), "gb2312")%>
        所以我们尽量设置传递的方式为POST这样就可以很简单的解决中文乱码问题。
      

  4.   

    在最开始的地方加入这样一行代码试一下:
    <%@ page contentType="text/html;charset=gb2312"%>
      

  5.   

    el中没有这样的方法
    productname是从何处得来,如果是后台,那么你需要加个过滤器进行转码,google上找一下,很多
      

  6.   

    To 樓上的所有兄弟:        近來工作上的原因所以有段時間沒有上來看了,今天結貼,分給的有點隨意,請不要上心,貴在大家都可以進步!我問的那個問題,當天我已經解決了,現在把解決辦法給大家說一下,希望對大家以後的工作當中有幫助:如下:在上面的設置都做了的情況下,進行下面的操作10:在地址重寫中用EL表達式傳中文的時候,出現亂碼時使用的代碼:
        10-1:javascript代碼寫在頁面的出現地址重寫頁面的最下方:
    <script> 
    for(var i=0;i<document.links.length;i++){ 
    document.links[i].href=encodeURI(document.links[i].href); 

    </script> 
    10-2:下面的代碼寫在接收參數的頁面中(有時候可能用不到就已經解決了問題)
    在action(目的頁面)中,String s=request.getParameter("s"); 
    s=new String(s.getBytes("iso-8859-1"),"gbk"); 以上,希望大家工作順利!