CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
IBM Rational 系统开发最佳实践工具包 WebSphere MQ 最佳实践 TOP 15
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Java >  Web 开发

JSTL中文问题:URL参数中带有汉字,如何正确获得汉字?

楼主weizhihui1213(胆小鬼)2006-03-10 16:06:18 在 Java / Web 开发 提问

点击A页面中的按钮,弹出B页面,同时URL中带有参数,参数值有汉字,在B页面中如何正确获得汉字?  
  说明:  
  1、A页面中<%@   page   contentType="text/html;   charset=GBK"   %>  
  2、B页面中<%@   page   contentType="text/html;   charset=UTF-8"   %>  
  因为在B页面中主要调用一Ocx控件,要输入汉字只有用UTF-8;在弹出B页面中的URL里的参数中汉字还是正常显示的,只是在B页面中获得时就成了乱码,如下:  
  B页面URL:http://localhost/FireInfo/tree.jsp?type=1&value=7,1,罗湖1中队;8,1,罗湖2中队;9,2,福田1中队;10,2,福田2中队;11,2,福田3中队;12,3,南山1中队;1,0,罗湖大队;2,0,福田大队;3,0,南山大队;4,0,盐田大队;5,0,D005;6,0,D006;  
  JSTL获得的参数value的值为:7,1,&Acirc;&THORN;&ordm;&thorn;1&Ouml;&ETH;&para;&Oacute;;8,1,&Acirc;&THORN;&ordm;&thorn;2&Ouml;&ETH;&para;&Oacute;;9,2,&cedil;&pound;&Igrave;&iuml;1&Ouml;&ETH;&para;&Oacute;;10,2,&cedil;&pound;&Igrave;&iuml;2&Ouml;&ETH;&para;&Oacute;;11,2,&cedil;&pound;&Igrave;&iuml;3&Ouml;&ETH;&para;&Oacute;;12,3,&Auml;&Iuml;&Eacute;&frac12;1&Ouml;&ETH;&para;&Oacute;;1,0,&Acirc;&THORN;&ordm;&thorn;&acute;ó&para;&Oacute;;2,0,&cedil;&pound;&Igrave;&iuml;&acute;ó&para;&Oacute;;3,0,&Auml;&Iuml;&Eacute;&frac12;&acute;ó&para;&Oacute;;4,0,&Ntilde;&Icirc;&Igrave;&iuml;&acute;ó&para;&Oacute;;5,0,D005;6,0,D006;(注:经过c:out输出得到的)  
   
  问题点数:50、回复次数:15Top

1 楼k3179(螃蟹)回复于 2006-03-10 16:12:24 得分 2

获得参数的方法错了吧Top

2 楼weizhihui1213(胆小鬼)回复于 2006-03-10 16:17:04 得分 0

B页面代码:  
  <%@   page   contentType="text/html;   charset=UTF-8"   %>  
  <%@   taglib   uri="WEB-INF/c.tld"   prefix="c"   %>  
  <%@   taglib   uri="WEB-INF/fmt.tld"   prefix="fmt"   %>  
  <c:set   var="type"   value="${param.type}"/>  
  <c:set   var="strValue"   value="${param.value}"/>       *****获得带有汉字的参数值***  
  <c:out   value="${type}"/>  
  <c:out   value="${strValue}"/>  
  <c:choose>  
  <c:when   test="${type   eq   '1'}">  
  <c:set   var="strFirst"   value="辖区单位"/>  
  </c:when>  
  </c:choose>  
  <html>  
  <head>  
  <meta   http-equiv="Content-Type"   content="text/html;   charset=gb2312">  
  <title><c:out   value="${strFirst}"/></title>  
  <script   language='javascript'>  
  <!--  
  function   cmdOK()  
  {  
      if(uclTree.TreeNodeKey!="0000"){  
          window.opener.frm.plcStation.value=TreeView.TreeNodeKey;  
          window.opener.frm.plcStationText.value=TreeView.TreeNodeText;  
          window.close()  
      }  
  }  
  function   cmdCancel()  
  {  
  window.opener.frm.plcStation.value="";  
  window.opener.frm.plcStationText.value="";  
  window.close();  
  }  
  //-->  
  </script>  
  <style   type="text/css">  
  <!--  
  body   {  
  margin-left:   0px;  
  margin-top:   0px;  
  margin-right:   0px;  
  margin-bottom:   0px;  
  background-image:   url(images/images/index_12.gif);  
  }  
  -->  
  </style>  
  <link   href="css/css_new.css"   rel="stylesheet"   type="text/css">  
  </head>  
   
  <body>  
  <br>  
  <table   width="100%"     border="0"   cellspacing="0"   cellpadding="0">  
      <tr>  
          <td   align="center">  
              <object   classid="clsid:23DBA47C-1262-4001-8712-09E1FD3AD5A5"   id="TreeView"   width="201"   height="257"     align="middle">  
                  <param   name="TreeNodeKey"   value="">  
                      <param   name="TreeNodeText"   value="">  
              </object>  
          </td>  
      </tr>  
      <tr>  
          <td   align="center"   valign="bottom"   height="25">  
              <input   name="btnOk"   type="button"   class="inputarea"   value="   确   定   "   onClick="javascript:cmdOK();">  
              &nbsp;&nbsp;&nbsp;&nbsp;  
              <input   name="btnCancel"   type="button"   class="inputarea"   value="   取   消   "   onClick="javascript:cmdCancel();">  
          </td>  
      </tr>  
  </table>  
  <script   language=javascript>  
  //调用控件方法,目前参数是手动填写的  
  TreeView.initTree("辖区单位",   "1,,罗湖大队;2,,福田大队;3,,南山大队;4,1,罗湖1中队;5,1,罗湖2中队;6,2,福田1中队");  
  </script>  
  </body>  
  </html>  
  Top

3 楼weizhihui1213(胆小鬼)回复于 2006-03-10 16:53:31 得分 0

大家帮忙呀Top

4 楼Saro(这也不是江水,这是二十年流不尽的英雄血。)回复于 2006-03-10 17:07:43 得分 5

a.jsp  
  /a.jsp?value=<%=java.net.URLEncoder.encode("7,1,罗湖1中队")   %>  
   
  b.jsp:  
  <%  
        String   value=request.getParameter("value");  
        value=   java.net.URLDecoder.decode(value);  
        out.print(value);  
  %>Top

5 楼zx2002027(http://www.netyi.net/in.asp?id=zx2002027)回复于 2006-03-10 20:29:10 得分 0

UPTop

6 楼SDMRauquin(冷月无心)回复于 2006-03-10 21:52:58 得分 30

能用Java吧  
   
  String   strKey   =   hreq.getParameter(SEARCH_KEY_PARAMETER);   //接受传来的参数  
  strKey=new   String(strKey.getBytes("ISO-8859-1"),"UTF-8");//转换参数类型Top

7 楼cenlmmx(学海无涯苦作舟)回复于 2006-03-10 23:01:03 得分 5

用java.net.URLEncoder.encode()和decode()Top

8 楼jam_lin(烈火)回复于 2006-03-10 23:38:54 得分 0

1、A页面中<%@   page   contentType="text/html;   charset=GBK"   %>  
  2、B页面中<%@   page   contentType="text/html;   charset=UTF-8"   %>  
   
  B页向A页发送  
  response.sendRedirect("http://A页?参数="+java.net.URLEncoder.encode(cname,"GBK"));  
  A页向B页发送  
  response.sendRedirect("http://A页?参数="+java.net.URLEncoder.encode(cname,"UTF-8"));  
   
  根据接收页面进行编码,无需进行任何任何处理即可正确获得参数Top

9 楼jam_lin(烈火)回复于 2006-03-10 23:41:18 得分 5

1、A页面中<%@   page   contentType="text/html;   charset=GBK"   %>  
  2、B页面中<%@   page   contentType="text/html;   charset=UTF-8"   %>  
   
  B页向A页发送  
  response.sendRedirect("http://A页?参数="+java.net.URLEncoder.encode("值","GBK"));  
  A页向B页发送  
  response.sendRedirect("http://B页?参数="+java.net.URLEncoder.encode("值","UTF-8"));  
   
  根据接收页面进行编码,无需进行任何任何处理即可正确获得参数Top

10 楼weizhihui1213(胆小鬼)回复于 2006-03-11 15:20:47 得分 0

在页面端,我用的是JSTL,如何使JSTL标签与JSP联合起来呢?这样可以吗?  
  <input   type=button   value="2"   onClick="MM_openBrWindow('tree.jsp?type=1&value=<%=java.net.URLEncoder.encode("<c:out   value="${strDept}"/>","UTF-8")   %>','tree','top=250,left=520,scrollbars=no,resizable=no,width=215,height=330')">  
   
  原来的是这样的:  
  <input   type=button   value="2"   onClick="MM_openBrWindow('tree.jsp?type=1&value=<c:out   value="${strDept}"/>")','tree','top=250,left=520,scrollbars=no,resizable=no,width=215,height=330')">  
   
  是通过点击一按钮,弹出的页面。我机器出了问题,不能够编译,所以不能测试,正在处理中。Top

11 楼weizhihui1213(胆小鬼)回复于 2006-03-13 11:01:25 得分 0

A.jsp部分代码:  
  <%@   page   contentType="text/html;   charset=GBK"   %>  
  <%@   page   import="cn.com.iaspec.sz119.query.event.*"   %>  
  <%@   page   import="java.util.*"   %>  
  ...  
  ...  
  ...  
  <%  
  Object   obj=request.getAttribute("resultQueryAlarm");  
  String   strDept="";  
  if(obj!=null){  
  QueryAlarmAllListES   qaAlist=(QueryAlarmAllListES)obj;  
                    Vector   vtDept=qaAlist.getQDictListES().getVtDept();  
                    Iterator   it=vtDept.iterator();  
                    while(it.hasNext()){  
                                QueryDictES   qde=(QueryDictES)it.next();  
                                strDept=strDept   +   qde.getSelfID()   +   ","   +   qde.getParentID()   +   ","   +   java.net.URLEncoder.encode(qde.getSelfName(),"UTF-8")   +   ";";  
                      }  
  }  
  %>  
  <input   name="plcStationText"   type="text"   size="30"   value=""   readonly><input   type=button   value="2"   onClick="MM_openBrWindow('tree.jsp?type=1&value=<%=strDept%>','tree','top=250,left=520,scrollbars=no,resizable=no,width=215,height=330')">  
  <input   name="plcStation"   type="hidden"   id="plcStation"   value="">  
  ...  
  ...  
  ...  
   
  a.jsp至tree.jsp的URL:http://localhost:8080/FireInfo/tree.jsp?type=1&value=7,1,%E7%BD%97%E6%B9%961%E4%B8%AD%E9%98%9F;8,1,%E7%BD%97%E6%B9%962%E4%B8%AD%E9%98%9F;9,2,%E7%A6%8F%E7%94%B01%E4%B8%AD%E9%98%9F;10,2,%E7%A6%8F%E7%94%B02%E4%B8%AD%E9%98%9F;11,2,%E7%A6%8F%E7%94%B03%E4%B8%AD%E9%98%9F;12,3,%E5%8D%97%E5%B1%B11%E4%B8%AD%E9%98%9F;1,0,%E7%BD%97%E6%B9%96%E5%A4%A7%E9%98%9F;2,0,%E7%A6%8F%E7%94%B0%E5%A4%A7%E9%98%9F;3,0,%E5%8D%97%E5%B1%B1%E5%A4%A7%E9%98%9F;4,0,%E7%9B%90%E7%94%B0%E5%A4%A7%E9%98%9F;5,0,D005;6,0,D006;  
   
  tree.jsp部分代码:  
  <%@   page   contentType="text/html;   charset=UTF-8"   %>  
  <%  
  String   type=request.getParameter("type");  
  String   strDept=request.getParameter("value");  
  out.println(strDept);//在这里输出获得的参数值,得到的仍然是乱码  
  String   strTitle="目录";  
  if(Integer.parseInt(type)==1)  
          strTitle="辖区单位";  
  else  
          strTitle="警情类别";  
  %>  
  ...  
  ...  
  <table   width="100%"     border="0"   cellspacing="0"   cellpadding="0">  
      <tr>  
          <td   align="center">  
              <object   classid="clsid:23DBA47C-1262-4001-8712-09E1FD3AD5A5"   id="TreeView"   width="201"   height="257"     align="middle">  
                  <param   name="TreeNodeKey"   value="">  
                      <param   name="TreeNodeText"   value="">  
              </object>  
          </td>  
      </tr>  
      <tr>  
          <td   align="center"   valign="bottom"   height="25">  
              <input   name="btnOk"   type="button"   class="inputarea"   value="   确定   "   onClick="javascript:cmdOK();">  
              &nbsp;&nbsp;&nbsp;&nbsp;  
              <input   name="btnCancel"   type="button"   class="inputarea"   value="   取消   "   onClick="javascript:cmdCancel();">  
          </td>  
      </tr>  
  </table>  
  <script   language=javascript>  
  TreeView.initTree("<%=strTitle%>",   "<%=strDept%>");  
  </script>  
  ...  
  乱码如下:  
  7,1,&ccedil;&frac12;&#151;&aelig;&sup1;&#150;1&auml;&cedil;&shy;é&#152;&#159;;8,1,&ccedil;&frac12;&#151;&aelig;&sup1;&#150;2&auml;&cedil;&shy;é&#152;&#159;;9,2,&ccedil;&brvbar;&#143;&ccedil;&#148;°1&auml;&cedil;&shy;é&#152;&#159;;10,2,&ccedil;&brvbar;&#143;&ccedil;&#148;°2&auml;&cedil;&shy;é&#152;&#159;;11,2,&ccedil;&brvbar;&#143;&ccedil;&#148;°3&auml;&cedil;&shy;é&#152;&#159;;12,3,&aring;&#141;&#151;&aring;±±1&auml;&cedil;&shy;é&#152;&#159;;1,0,&ccedil;&frac12;&#151;&aelig;&sup1;&#150;&aring;¤§é&#152;&#159;;2,0,&ccedil;&brvbar;&#143;&ccedil;&#148;°&aring;¤§é&#152;&#159;;3,0,&aring;&#141;&#151;&aring;±±&aring;¤§é&#152;&#159;;4,0,&ccedil;&#155;&#144;&ccedil;&#148;°&aring;¤§é&#152;&#159;;5,0,D005;6,0,D006;    
   
  我真的不知道怎么解决了,这个问题有几天了,到现在没有解决,请各位帮帮忙,不胜感激!Top

12 楼weizhihui1213(胆小鬼)回复于 2006-03-13 11:06:57 得分 0

在CSDN上,那些乱码不能显示,我的程序页面中,就是些方块、三角、阿拉丁符号等等之类的东西Top

13 楼Saro(这也不是江水,这是二十年流不尽的英雄血。)回复于 2006-03-13 12:55:27 得分 3

out.println(strDept);//在这里输出获得的参数值,得到的仍然是乱码  
  --  
  要用java.net.URLDecoder.decode转。  
   
  我上面已经给出来了做法了。我测试是通过的。  
  a.jsp  
  /a.jsp?value=<%=java.net.URLEncoder.encode("7,1,罗湖1中队")   %>  
   
  b.jsp:  
  <%  
        String   value=request.getParameter("value");  
        value=   java.net.URLDecoder.decode(value);  
        out.print(value);  
  %>  
   
  说明一下我的测试环境,AppServer是jetty,a.jsp文件以GBK存储,b.jsp文件以UTF-8存储.如果你使用的是tomcat,注意是否设定了tomcat   的URIEncoding。Top

14 楼Saro(这也不是江水,这是二十年流不尽的英雄血。)回复于 2006-03-13 12:56:00 得分 0

/a.jsp?value=<%=java.net.URLEncoder.encode("7,1,罗湖1中队")   %>  
  应是  
  /b.jsp?value=<%=java.net.URLEncoder.encode("7,1,罗湖1中队")   %>  
  Top

15 楼weizhihui1213(胆小鬼)回复于 2006-03-14 17:43:37 得分 0

问题解决了,环境为:win2k   +   jdk1.5   +   Jboss4.0   +   JBuilder2006,页面部分采用JSTL标签,我的做法如下:  
  a.jsp部分代码如下:  
  <%@   page   contentType="text/html;   charset=GBK"   %>  
  <%@   taglib   uri="../WEB-INF/c.tld"   prefix="c"   %>  
  ...  
  <c:set   value=""   var="strDept"   scope="page"/>  
  <c:forEach   items="${resultQueryAlarm.QDictListES.vtDept}"   var="dept">  
        <c:set   value="${strDept}${dept.selfID},${dept.parentID},${dept.selfName};"   var="strDept"/>  
  </c:forEach>  
  <input   name="departText"   type="text"   size="30"   value=""   readonly><input   type=button   value="2"   onClick="MM_openBrWindow('tree.jsp?type=1&value=<c:out   value="${strDept}"/>','tree','scrollbars=no,resizable=no,width=215,height=310')">  
  <input   name="departID"   type="hidden"   value="">  
  ...  
   
  tree.jsp部分代码如下:  
  <%@   page   contentType="text/html;   charset=GBK"   %>  
  <%  
  String   type=request.getParameter("type");  
  String   strDept=new   String(request.getParameter("value").getBytes("ISO8859-1"),"gb2312");  
  String   strTitle="目录";  
  if(Integer.parseInt(type)==1)  
          strTitle="辖区单位";  
  else   if(Integer.parseInt(type)==2)  
          strTitle="警情类别";  
  %>  
  ...  
  <script   language=javascript>  
  TreeView.initTree("<%=strTitle%>",   "<%=strDept%>");//TreeView为控件名  
  </script>  
  ...  
   
  多谢各位的提点和帮助,结帖了!Top

相关问题

  • 急!!!url参数为汉字+数字出现乱码的情况?
  • url参数的值不能为汉字吗?
  • URL 参数是汉字会出现乱码
  • JSTL问题:如何获得URL传递过来的参数值
  • url传递参数
  • 网页中有很多超连接像 url.aspx?aa=汉字 ,这样!如果点击的时候在URL中将汉字编码?然后接受参数的时候解码?
  • 网页如何传递带汉字的参数
  • 汉字参数传递问题,高分急救!!
  • 关于传送汉字参数转码的问题
  • asp.net 中 Request 接收汉字参数问题.

关键词

  • .net
  • 汉字

得分解答快速导航

  • 帖主:weizhihui1213
  • k3179
  • Saro
  • SDMRauquin
  • cenlmmx
  • jam_lin
  • Saro

相关链接

  • CSDN Java频道
  • Java类图书
  • Java类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo