表單用post方法提交資料時亂碼問題

2021-06-02 14:40:58 字數 849 閱讀 9584

要注意的是這裡的charset=utf-8是預設的,如果這個html**裡有

,那麼此html的form表單將以gbk的編碼方式提交資料,其實表單提交資料使用的編碼方式是可以指定的.

那現在用httpclient,根本就沒有瀏覽器和具體的html**,其實httpclient的postmethod物件裡已經有設定編碼方式的方法

這裡的編碼方式可以隨意指定,開始就是因為沒有寫這段,採用了httpclient預設的編碼方式,所以出現亂碼,這裡設定編碼方式的方法也不唯一.ajax使用post方法提交資料的編碼方式的設定也和這個類似.

2.伺服器端是如何選擇那種編碼方式來對資料進行解碼的呢.

首先我用request.getcharacterencoding()來看表單提交資料所使用的編碼方法,奇怪的是用瀏覽器提交request.getcharacterencoding()是null,而用httpclient提交request.getcharacterencoding()的值是utf-8,和客戶端指定的編碼方式一致,後來google了下,原來是瀏覽器做的手腳,ie是不將表單提交資料使用的編碼方式寫到http頭部傳送出去的.我發現如果用httpclient的post提交資料,編碼方式指定的話,request.getcharacterencoding()是能得到值的,而且request物件也用此編碼方式解碼,不用request.setcharacterencoding("")指定;如果request.getcharacterencoding()是null,就要request.setcharacterencoding("")指定編碼方式,要和你提交時設定的編碼方式一致.然後request.getparameter("")的值就是你想要的了.(這裡有可能有誤的地方請指出)

" >

JSP解決表單post方式提交時的中文亂碼問題

設定請求引數的編碼對於post請求,若其請求引數包含中文字元,那麼我們只需在解析請求引數前加一句如下的 即可。需要注意的是,這種方式對 get請求起不到任何作用。此外,由於我們對請求已經重新編碼,所以已經不需要使用 string類 再進行轉碼,否則畫蛇添足。最後,對於 post請求,request....

POST提交表單時EnType設定問題

首先知道enctype這個屬性管理的是表單的mime編碼。共有三個值可選 2 multipart form data 3 text plain 而multipart form data是用來指定傳輸資料的特殊型別的,主要就是我們上傳的非文字的內容,比如或是是 等等。text plain是純文字傳輸的...

php表單提交時獲取不到post資料的解決方法

原文 博主執行php環境 windows phpstorm xampp 初學php,用echo post variable 和var dump post 都獲取不到post資料。解決方法如下 1.找到php.ini 配置檔案,查詢enable post data reading變數,確保其開啟狀態 ...