Ajax亂碼解決方案

方案1:html

            頁面端:java

 <%@ page language="java" contentType="text/html; charset=gb2312"
    pageEncoding="gb2312"%>
http://www.w3.org/TR/html4/loose.dtd">數據庫

Ajax:服務器

function veryfy(){
 //亂碼問題解決:
  //1.頁面端發送的數據採用encodeURI,encodeURI($("#username").val()),服務器端採用new String(str.getBytes("iso8859-1","utf-8"));
 //2.頁面端發送的數據採用兩次encodeURI,encodeURI(encodeURI($("#username").val())),服務器端URLDecoder.decode(str,"utf-8");
 $.get("AjaxSeverlet?name=" + encodeURI($("#username").val()), null, function(data){
  $("#msg").html(data);
 });
 
}spa

服務器端:code

public void doPost(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {
    request.setCharacterEncoding("gb2312");   
    response.setHeader("charset","gb2312");  //設置返回頁面的頭 meta 信息
    response.setContentType("text/html;charset=gb2312");  //設置輸出的文檔類型
   // 以上內容在PrintWriter 聲明前設置,杜絕亂碼
    
          PrintWriter out=response.getWriter(); 
       
          //接收參數實例:(Ajax頁面端到服務器端)
          String s = request.getParameter("name");
          s = new String(s.getBytes("iso-8859-1"), "utf-8");  
          System.out.println(s);
          
          //服務器端到頁面端:
         // out.print("Ajax亂碼解決"); //直接輸出中文 
          
          /*
           *從數據庫中取中文數據
           */ 
          SqlTools st = new SqlTools();
          ResultSet rs = st.getResultSet("select seller from orders where orderid = 1");
          
         
          String dbs = "";
          try {
   if(rs.next()) {
      dbs = rs.getString("seller");
     } 
  } catch (SQLException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  out.print(dbs); 
 }htm

 

方案二:utf-8

   方案一有時候確實不穩定,只須要在頁面端兩次encodeURI,而後在服務器端用URI.decode() 解碼文檔

相關文章
相關標籤/搜索