request的get和post引數亂碼問題
一、原因
1、http在請求的時候,如果沒有特殊設定,採用過的是ISO8859-1的編碼方式進行資料提交,伺服器解析的時候採用的也是ISO8859-1的方式進行解碼。因為ISO8859-1字符集中沒有中文,所以造成亂碼。
注意:
伺服器的解碼方式和傳過來的http請求的編碼方式無關。需要各自設定。
比如:在jsp中設定了請求的編碼方式是utf-8,但是伺服器並不會採用utf-8進行解碼,在沒有設定的情況下,仍然採用的是ISO8859-1進行解碼,仍然會造成亂碼。
二、解決辦法
1)post請求
1、設定request.setCharacterEncoding("")
2、Tomcat預設編碼ISO8859-1,設定成其他的編碼
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8444" useBodyEncodingForURI="true" URIEncoding="UTF-8"/>
|
useBodyEncodingForURI和URIEncoding區別
3、通過字串和位元組流轉換時使用正確的編碼獲取中文引數
String str = new String(request.getParameter("引數名").getBytes("iso-8859-1"), "utf-8");
|
2)get請求
對get請求的引數的轉碼,上述post的三種方式,只有第三種能用,這和Tomcat的內部機制有關
相關文章
- 解決ajax get post方式提交中文引數亂碼問題
- Servlet中request請求Get和Post方法以及亂碼解決Servlet
- Request 接收引數亂碼原理解析
- response亂碼和request亂碼
- GET請求引數為中文時亂碼分析
- 解決Url帶中文引數亂碼問題
- RestTemplate exchange GET POST請求傳引數DEMOREST
- Postman 使用 Get 請求 URL 傳參中文亂碼的問題Postman
- GET 和 POST 的區別
- GET和POST的區別?
- GET和POST的區別
- POST 和 GET 的區別
- GET 和 POST 的區別(重要,面試常問)面試
- 記錄PHP post提交表單匯入mysql中文亂碼的問題PHPMySql
- get和post區別
- zblog獲取GET/POST等值函式“GetVars”引數和使用方法介紹函式
- vue 新增axios解決post傳引數為null問題VueiOSNull
- $.ajax(),$.get(),$.post()的區別,以及一些引數注意規則
- jQuery – AJAX get() 和 post() 方法jQuery
- Python探析get和post方法Python
- 關於在request請求時,處理請求引數的問題
- post傳引數,但是後端無法接收問題解決後端
- HttpClient多檔案上傳程式碼及普通引數中文亂碼問題解決HTTPclient
- vue-resource get/post請求如何攜帶cookie的問題VueCookie
- Java Web後臺從request裡面獲取的資料是亂碼問題JavaWeb
- PHP中GET與POST變數PHP變數
- Get/Post
- confluence亂碼問題
- python request.post圖片和字典Python
- pytest-引數request的使用
- request/response解決中文亂碼
- Get提交方式中文亂碼
- 關於Jmeter引數化的編碼問題JMeter
- vscode中文亂碼問題VSCode
- EasyUI 中文亂碼問題UI
- http和https的區別/get和post的區別HTTP
- Get 和 Post 方法的選擇和URL的設計
- HTTP協議 GET和POST的左右互博HTTP協議
- http請求之get和post的區別HTTP