JS.中文乱码,JspServlet端的解决办法

JS.中文乱码,JspServlet端的解决办法  

2010-03-08 15:18:21|  分类: Extjs |  标签:encodeuricomponent  乱码  urldecoder  |举报|字号 订阅

 
 

         上一篇文章提到Js的传递中文参数,在Webwork框架下解析出来的是乱码。

          这一篇文章将要提到在Jsp、Servlet端对Js传递中文的解决办法。

          index.jsp

          第一个页面给第二个页面通过URL传递中文参数,两次调用encodeURIComponent()函数来编码:

         

 <a href="http://localhost:8080/web/jsp/Testing.jsp?name="+encodeURIComponent(encodeURIComponent(“测试乱码”))">姓名</a>

          Testing.jsp

           第二个负责接收数据的页面。  解码上面的中文参数:

 <%
   String name = "''";
   if(request.getParameter("name")!=null){
    name = "'"+URLDecoder.decode(request.getParameter("name"),"utf-8")+"'";
   }
  %>

<script type="text/javascript">
   var name = <%=name%>;
  </script>

            上面的代码就是调用java.net.URLDecoder类来进行解码。由于request.getParameter()方法在调用的时候,java就已经自动将数据解码了一次,所以如果在index.jsp页面中只编码一次的话,在这里就会得到乱码。因此,要使用encodeURIComponent()编码两次,然后URLDecoder+getParameter()再进行两次解码。

             另外。请注意Testing.jsp页面的红色代码。注意标点符号!由于js中的字符串需要使用单引号来表示,所以如果我们定义java变量的时候,不手动给这个字符串name加上单引号的话,那么在js端就会把它等成其他类型。就会提示“xxx无定义”。因此,请注意。在变量两头都加上单引号:name = "   '  "  +name + "  '  "。这样看应该清晰了吧。

         

原文地址:https://www.cnblogs.com/yifenghong/p/3748723.html