最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java中form以post、get方式提交數(shù)據(jù)中文亂碼問題總結(jié)

 更新時間:2014年10月26日 10:15:38   投稿:hebedich  
這篇文章主要介紹了java中form以post、get方式提交數(shù)據(jù)中文亂碼問題總結(jié),需要的朋友可以參考下

  一:form在前臺以post方式提交數(shù)據(jù):

    瀏覽器將數(shù)據(jù)(假設為“中國”)發(fā)送給服務器的時候,將數(shù)據(jù)變成0101的二進制數(shù)據(jù)(假設為98 99)時必然要查碼表,瀏覽器以哪個碼表打開網(wǎng)頁,瀏覽器就以哪個碼表提交數(shù)據(jù)。數(shù)據(jù)到達服務器后,數(shù)據(jù)(98 99)要封裝到request中,在servlet中調(diào)用Request的getParameter方法返回的是字符串(“中國”),方法內(nèi)部拿到數(shù)字后要轉(zhuǎn)成字符,一定要查碼表,由于request的設計者是外國人,所以默認查的是他們常用的ISO8859-1,這就是請求數(shù)據(jù)產(chǎn)生亂碼的根源。

復制代碼 代碼如下:

package com.yyz.request;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
//以post方式提交表單
public class RequestDemo extends HttpServlet {

    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
         //請求數(shù)據(jù)的中文亂碼問題
        request.setCharacterEncoding("UTF-8");//客戶端網(wǎng)頁我們控制為UTF-8
        String username = request.getParameter("username");
        //獲取數(shù)據(jù)正常,輸出數(shù)據(jù)時可以查閱不同碼表
        response.setCharacterEncoding("gb2312");//通知服務器發(fā)送數(shù)據(jù)時查閱的碼表
        response.setContentType("text/html;charset=gb2312");//通知瀏覽器以何種碼表打開
        PrintWriter out = response.getWriter();
        out.write(username);

    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        doGet(request,response);
}

二:form在前臺以get方式提交數(shù)據(jù):

   get方式提交的數(shù)據(jù)依然是瀏覽器用什么碼表打開就用什么碼表發(fā)送。不同的是,以get方式提交數(shù)據(jù)時,request設置編碼無效。即使設置了UTF-8還是會去查ISO8859-1。得到(? ?),要解決這個問題,需要拿著(??)反向查ISO8859-1,拿到(98 99)后,再去查正確碼表。

復制代碼 代碼如下:

 package com.yyz.request;
 
 import java.io.IOException;
 import java.io.PrintWriter;
 
 import javax.servlet.ServletException;
 import javax.servlet.http.HttpServlet;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
//以get方式提交表單
public class RequestDemo extends HttpServlet {

   public void doGet(HttpServletRequest request, HttpServletResponse response)
           throws ServletException, IOException {
        //請求數(shù)據(jù)的中文亂碼問題
       request.setCharacterEncoding("UTF-8");//以get方式提交數(shù)據(jù)時,request設置編碼無效。即使設置了UTF-8還是會去查ISO8859-1
       String username = request.getParameter("username");
      System.out.println(username);
       byte source [] = username.getBytes("iso8859-1");
       username = new String (source,"UTF-8");
       System.out.println(username);
      

   public void doPost(HttpServletRequest request, HttpServletResponse response)
           throws ServletException, IOException {
       doGet(request,response);
}

}


三:提交數(shù)據(jù)中文亂碼問題總結(jié):

1.如果提交方式為post,想不亂碼,只需要設置request對象的編碼即可。

      注意:客戶機數(shù)據(jù)是以哪種方式提交的,request就應該設成什么編碼。

2.如果提交方式為get,設置request對象的編碼是無效的,想不亂碼,只能手工轉(zhuǎn)換。

     String data = "???????";//亂碼字符串
     byte source [] = data.getBytes("iso8859-1");//得到客戶機提交的原始數(shù)據(jù)
     data = new String (data.getBytes("iso8859-1"),"UTF-8");//解決亂碼

     //等同于

    data = new String (source,"UTF-8");

3.get方式的亂碼,還可以通過更改服務器配置的方式實現(xiàn)。更改Tomact的conf目錄下的server.xml文件。

      3.1    
      
      
      
      這種方式并不推薦,因為更改了服務器且并不靈活。

      3.2
     
     
     
      這么設置后,request的setCharacterEncoding設置什么編碼,連接器就用什么編碼,雖然比上一種更改靈活,但依然會導致我們的應用程序牢牢依賴于服務器,也不被推薦。

四:最后的最后,提一個小細節(jié):URL地址后面如果跟了中文數(shù)據(jù),一定要經(jīng)過URL編碼。表單提交的參數(shù)有中文數(shù)據(jù),瀏覽器會自動幫我們編碼,但如果是通過鏈接直接帶中文參數(shù),瀏覽器是不會幫我們編碼的,這時想通過上述第二種方式解決中文亂碼問題就時靈時不靈了,應該通過URLEncoding.encode(,"UTF-8")先編碼。

相關文章

  • java+mysql實現(xiàn)圖書館管理系統(tǒng)實戰(zhàn)

    java+mysql實現(xiàn)圖書館管理系統(tǒng)實戰(zhàn)

    這篇文章主要為大家詳細介紹了java+mysql實現(xiàn)圖書館管理系統(tǒng)實戰(zhàn),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-12-12
  • 關于Spring總結(jié)(必看篇)

    關于Spring總結(jié)(必看篇)

    下面小編就為大家?guī)硪黄P于Spring總結(jié)(必看篇)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-08-08
  • Spring Boot + Kotlin整合MyBatis的方法教程

    Spring Boot + Kotlin整合MyBatis的方法教程

    前幾天由于工作需要,便開始學習了kotlin,java基礎扎實學起來也還算比較快,對于kotlin這個編程語言自然是比java有趣一些,下面這篇文章主要給大家介紹了關于Spring Boot + Kotlin整合MyBatis的方法教程,需要的朋友可以參考下。
    2018-01-01
  • 最新評論

    东平县| 遂宁市| 玛曲县| 龙川县| 阜宁县| 安达市| 中阳县| 峨边| 和龙市| 东至县| 专栏| 南江县| 陆良县| 彰化市| 北辰区| 彰武县| 双柏县| 清水县| 申扎县| 泰顺县| 永康市| 丘北县| 禹州市| 铜鼓县| 桃园县| 阳信县| 周宁县| 陇川县| 沅陵县| 缙云县| 扶绥县| 登封市| 交城县| 阿城市| 洛川县| 常德市| 康乐县| 渝中区| 瑞安市| 禄劝| 隆回县|