国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
提交表單時指定編碼

1,提交表單時可以指定編碼嗎?

準確地說:提交表單時可以指定請求要素的編碼嗎?

如果是使用html的form表單是不行的.

下面是我做的實驗,html如下:


 

不僅head中指定了編碼為gbk,而且form屬性accept-charset 也指定為gbk,但是提交表單時,后臺獲取到的request charset卻是"UTF-8",


 

chrome和火狐瀏覽器中都是一樣.

結論:

(a)html的form表單標簽中無法指定request的編碼.

(b)提交的請求編碼是UTF-8

 

那么表單標簽中的屬性accept-charset有什么作用呢?

告訴瀏覽器提交表單時以什么編碼方式對請求要素進行編碼


 

如上圖,指定了accept-charset 的編碼為:UTF-8,頁面的編碼是utf-8,而head中指定GBK編碼,所以

address 的值亂碼了,本來應該是"中國",結果顯示:


 中國,兩個漢字,以UTF-8編碼則有6個字節(jié),因為在html的header中指定了GBK編碼,所以6個字節(jié)按照GBK解碼,就是3個漢字,因此亂碼.

提交post請求時,3個漢字會以accept-charset 指定的編碼(UTF-8)來編碼,所以是9個字節(jié):


 

所以accept-charset 只是指定了提交時對請求要素如何編碼,但是并沒有指定請求的編碼.

通俗點:只是默默地做了事,但是沒有告訴服務器.

 

 

2,提交表單時為什么要指定請求編碼?

解決亂碼:

告訴服務器,請求要素的編碼方式,這樣服務器才知道應該如何解碼.

 

3,方案

使用HttpURLConnection 可以指定編碼

如何指定呢?

Java代碼  
  1. huc.addRequestProperty("content-type", contentType);  

 contentType的值為:application/x-www-form-urlencoded;charset=GBK


 

4,服務器如何獲取請求編碼?

String charEncoding = request.getCharacterEncoding();

Java代碼  
  1. /*** 
  2.      * Get request query string, form method : post 
  3.      *  
  4.      * @param request 
  5.      * @return 
  6.      * @throws IOException 
  7.      */  
  8.     public static String getRequestPostStr(HttpServletRequest request)  
  9.             throws IOException {  
  10.         byte buffer[] = getRequestPostBytes(request);  
  11.         if(ValueWidget.isNullOrEmpty(buffer)){  
  12.             return null;  
  13.         }  
  14.         String charEncoding = request.getCharacterEncoding();  
  15.         if (charEncoding == null) {  
  16.             charEncoding = "UTF-8";  
  17.         }  
  18.         return new String(buffer, charEncoding);  
  19.     }  

 

 

本站僅提供存儲服務,所有內容均由用戶發(fā)布,如發(fā)現有害或侵權內容,請點擊舉報
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Tomcat源碼分析之中文亂碼(一)
Java常見亂碼原理及解決方案
JSP編碼以及亂碼解決總結
AJAX和Form表單提交
PHP編碼轉換和PHP編碼判斷
深入淺出URL編碼
更多類似文章 >>
生活服務
分享 收藏 導長圖 關注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點擊這里聯系客服!

聯系客服