zoukankan      html  css  js  c++  java
  • servlet请求乱码问题的一些处理

     1、什么是url编码?
     浏览器对链接中的特殊字符(非ascii字符以及一些
     标点符号等)会进行编码处理。中文就需要编码。
     2、链接当中包含了中文参数,浏览器会对中文
     参数进行编码,编码依据打开该页面时的编码。
      如果请求发送方式是get方式,不能够使用
      request.setCharacterEncoding()!
      解决方式一:
       new String(str.getBytes("iso8859-1"),"编码");
       注意,编码要看浏览器打开页面时的编码。
      解决方式二:
       在tomcat conf\server.xml找到
       <Connector port="8080",在末尾添加
       URIEncoding="utf-8",其作用是,告诉
       服务器,对于get请求,采用utf-8解码。
     3、链接地址包含中文,浏览器一定会以utf-8编码。
     4、对于ajax
      (1)
      如果是get请求,ie会按gb2312编码,而
      firefox会按utf-8编码。
      可以使用encodeURI()对请求地址进行编码处理。
      该函数以utf-8来编码。
      step1 : 使用encodeURI()对url进行编码处理。
      即xhr.open("get",encodeURI("some.do?name=张三"),true);
      step2:在tomcat conf\server.xml找到
       <Connector port="8080",在末尾添加
       URIEncoding="utf-8"或者
       String str = request.getParameter("name");
       new String(str.getBytes("iso8859-1"),"utf-8");
      (2)如果是post请求,没有编码问题。

     1 <%@ page  import="java.net.*" contentType="text/html; charset=gbk"
     2     pageEncoding="gbk"%>
     3 <html>
     4 <head>
     5     <title>Insert title here</title>
     6 </head>
     7 <body style="font-size:30pt;">
     8     <a href="some?name=<%=URLEncoder.encode("张三","utf-8")%>">invoke some</a>
     9 </body>
    10 </html>
     1 package web;
     2 
     3 import java.io.IOException;
     4 import java.io.PrintWriter;
     5 
     6 import javax.servlet.ServletException;
     7 import javax.servlet.http.HttpServlet;
     8 import javax.servlet.http.HttpServletRequest;
     9 import javax.servlet.http.HttpServletResponse;
    10 
    11 public class SomeServlet extends HttpServlet {
    12 
    13     public void service(HttpServletRequest request, HttpServletResponse response)
    14             throws ServletException, IOException {
    15         String name = request.getParameter("name");
    16         name = new String(name.getBytes("iso8859-1"),
    17                 "utf-8");
    18         System.out.println("name:" + name);
    19         
    20     }
    21 
    22 }
    1 public static void main(String[] args) throws UnsupportedEncodingException {
    2         // TODO Auto-generated method stub
    3         String str1 = URLEncoder.encode("张三","gbk");
    4         System.out.println("str1:" + str1);
    5         String str2 = URLDecoder.decode("%E5%BC%A0%E4%B8%89","utf-8");
    6         System.out.println("str2:" + str2);
    7     }
  • 相关阅读:
    WinForm 自定义控件 学习笔记三
    FtpWebRequest相关
    delegate学习笔记1
    C#操作XML
    WinForm 非客户区相关
    WinForm 自定义控件 学习笔记二
    POJ1061 青蛙的约会(扩展欧几里得)
    aaaaaaa……aaa(n个)%p的值 (矩阵快速幂)
    POJ3735 Training little cats(矩阵快速幂)
    数据库日志文件太大的解决方法及原理
  • 原文地址:https://www.cnblogs.com/smile361/p/2642194.html
Copyright © 2011-2022 走看看