广州北大青鸟计算机职业培训学校
互联网技术培训、软件技术培训、大数据培训、云计算培训、数据分析培训信息网
当前位置:网站首页 > 计算机学校 > 佛山计算机学校 > 正文

佛山如何解决网页传值过程中文乱码问题

作者:admin01发布时间:2021-08-17分类:佛山计算机学校浏览:768


导读:解决中文乱码问题网页传值主要有两种情况:1、使用form表单传值  使用form表单传值主要有两种方式:get和post(即:method...

解决中文乱码问题
网页传值主要有两种情况:
1、使用form表单传值
    使用form表单传值主要有两种方式:get和post(即:method="get/post",默认是get方式)
    1)解决使用post方式传递中文的乱码问题:
        方法一:

         <form action="login-handler.jsp" method="post"></form> 
         在接收请求参数之前设置请求编码即可,request.setCharacterEncoding("编码"); 
         示例: 
         <% 
             request.setCharacterEncoding("UTF-8"); 
             String name = request.getParameter("name"); 
             String pwd = request.getParameter("pwd"); 
         %> 
        方法二:
        可以写一个Filter过滤该项目下的所有请求编码
        web.xml文件
         <filter> 
           <filter-name>charsetEncoding</filter-name> 
           <filter-class>com.lym.filter.CharsetEncodingFilter</filter-class> 
           <init-param> 
               <param-name>code</param-name> 
               <param-value>UTF-8</param-value> 
           </init-param> 
        </filter> 
        <filter-mapping> 
           <filter-name>charsetEncoding</filter-name> 
           <url-pattern>/*</url-pattern> 
        </filter-mapping> 
       CharsetEncodingFilter.java文件
        public class CharsetEncodingFilter implements Filter { 
           private static String CODE = "UTF-8";//默认编码 
           public void destroy() {} 
           public void doFilter(ServletRequest arg0, ServletResponse arg1,FilterChain arg2) throws IOException, ServletException { 
               HttpServletRequest req = (HttpServletRequest)arg0; 
               HttpServletResponse resp = (HttpServletResponse)arg1; 
               req.setCharacterEncoding(CODE); 
               resp.setCharacterEncoding(CODE); 
               arg2.doFilter(arg0, arg1); 
          } 
          public void init(FilterConfig arg0) throws ServletException { 
              String code = arg0.getInitParameter("code"); 
              if(!"".equals(code) && code!= null){ 
                  CODE = code; 
              } 
         } 
      }      
    2)解决使用get方式传递中文的乱码问题:(两种方法)
        <form action="login-handler.jsp" method="get"></form>
        方法一:
             对接受到的请求参数进行转码,使用String name = new String(name.getBytes("默认编码"),"转换后的编码"); 
             <% 
                 String name = request.getParameter("name"); 
                 name = new String(name.getBytes("ISO-8859-1"),"UTF-8");//将接收到的name参数的编码转换为UTF-8编码 
             %> 
        方法二:
            客户端用户提交数据之前,使用JS把用户要提交的中文值进行编码,然后再服务器端对接收到的值进行解码即可。
            客户端编码:
                 <script> 
                     function login(){ 
                         var loginForm = document.forms["loginForm"]; 
                         loginForm.name.value = encodeURI(loginForm.name.value);//对中文字符串进行编码 
                         return true; 
                     } 
                 </script> 
                 <form action="login-handler.jsp" name="loginForm" method="get"></form> 
            服务端解码:
                 <% 
                     String name = request.getParameter("name"); 
                     name = URLDecoder.decode(name, "UTF-8"); 
                 %> 
                 
        注意:使用encodeURI对字符串进行一次编码,再提交表单时又对字符串进行了一次的编码,实际进行了两次编码。
               在使用URLDecoder.decode()进行解码时,实际上是对字符串进行两次解码。
            
2、使用<a href=""></a>超链接的方式传值
    使用JS对a标签的href属性值进行编码,在对a标签的href属性值编码时,要两次编码才能在服务端使用URLDecoder.decode()进行解码。
    客户端编码:
         <script> 
             function a(){ 
                 var doc = document.getElementById("aa"); 
                 doc.href = "a-handler.jsp?info="+encodeURI(encodeURI("你好")); 
             } 
         </script> 
         <a href="" id="aa">使用超链接传送中文参数</a> 
    服务端解码:
         <%
            String user = request.getParameter("info");
            user = URLDecoder.decode(user, "UTF-8");
            out.println(user);
        %>

免责声明:本文文字及图片由小编转载自网

络,版权所有权归原作者所有,如有侵权请及时联系我们进行删除。

以上是小编为大家带来的最新资讯,喜欢的朋友们可以继续关注本站最新动态,也可以咨询在线客服。


佛山计算机学校排行
标签列表
网站分类
文章归档
最近发表