解決HttpURLConnection請求時傳中文引數亂碼問題
解決HttpURLConnection請求時傳中文引數亂碼
前提: 專案的編碼是utf-8, 即要保證專案下所有檔案的編碼都是utf-8
示例程式碼如下:
/** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setCharacterEncoding("utf-8"); request.setCharacterEncoding("utf-8"); response.setContentType("text/html;charset=utf-8"); String mobilePhone = request.getParameter("mobilePhone"); String realName = request.getParameter("realName"); realName = URLEncoder.encode(realName, "utf-8"); String params = "method=" + method + "&appId=" + appId + "&sign=" + sign + "×tamp=" + timestamp + "&mdn=" + mobilePhone + "&realName=" + realName; String returnStr = ApiUtil.getResult(Constants.CLOUD_API, params, "utf-8"); JSONObject jo = (JSONObject) JSONObject.parse(returnStr); response.getWriter().print(jo); response.getWriter().flush(); response.getWriter().close(); } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doGet(request, response); }
realName
可能出現中文, 我們對其進行URLEncoder編碼, ApiUtil.getResult(Constants.CLOUD_API, params, "utf-8");
這裡傳遞utf-8
引數
/** * @param urlStr * 請求的地址 * @param content * 請求的引數 格式為:name=xxx&pwd=xxx * @param encoding * 伺服器端請求編碼。如GBK,UTF-8等 * @return */ public static String getResult(String urlStr, String content, String encoding) { URL url = null; HttpURLConnection connection = null; try { url = new URL(urlStr); connection = (HttpURLConnection) url.openConnection();// 新建連線例項 connection.setConnectTimeout(2000);// 設定連線超時時間,單位毫秒 connection.setReadTimeout(2000);// 設定讀取資料超時時間,單位毫秒 connection.setDoOutput(true);// 是否開啟輸出流 true|false connection.setDoInput(true);// 是否開啟輸入流true|false connection.setRequestMethod("POST");// 提交方法POST|GET connection.setUseCaches(false);// 是否快取true|false connection.setRequestProperty("Accept-Charset", encoding); connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded;charset=" + encoding); connection.connect();// 開啟連線埠 DataOutputStream out = new DataOutputStream(connection .getOutputStream());// 開啟輸出流往對端伺服器寫資料 out.writeBytes(content);// 寫資料,也就是提交你的表單 name=xxx&pwd=xxx out.flush();// 重新整理 out.close();// 關閉輸出流 BufferedReader reader = new BufferedReader(new InputStreamReader( connection.getInputStream(), encoding));// 往對端寫完資料對端伺服器返回資料 // ,以BufferedReader流來讀取 StringBuffer buffer = new StringBuffer(); String line = ""; while ((line = reader.readLine()) != null) { buffer.append(line); } reader.close(); return buffer.toString(); } catch (IOException e) { e.printStackTrace(); } finally { if (connection != null) { connection.disconnect();// 關閉連線 } } return null; }
標準的 HTTP POST 是一種 application/x-www-form-urlencoded 型別的網路表單,傳遞的引數都會被寫入請求資訊主體中。
connection.setRequestProperty("Accept-Charset", encoding);
connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded;charset=" + encoding);
相關推薦
解決HttpURLConnection請求時傳中文引數亂碼問題
解決HttpURLConnection請求時傳中文引數亂碼 前提: 專案的編碼是utf-8, 即要保證專案下所有檔案的編碼都是utf-8 示例程式碼如下: /** * @see HttpServlet#doGet(HttpServletRequest r
IE下get方式傳中文引數亂碼解決方法
亂碼原因:瀏覽器在傳遞url的時候,會使用自己的編碼格式對地址進行編碼,如果瀏覽器所使用編碼與伺服器採用編碼不一致,伺服器接收到的引數就會出現亂碼。在firefox,chrome下正常,ie下會出現亂碼。 解決方法:使用js encodeURI 對地址進行統一編碼, &n
JSP中文及傳中文引數亂碼解決方法小結
在使用JSP的過程中,最使人頭疼的一個問題就是中文亂碼問題,以下是我在軟體開發中遇到的亂碼問題以及解決方法。 1、JSP頁面亂碼 這種亂碼的原因是應為沒有在頁面裡指定使用的字符集編碼,解決方法:只要在頁面開始地方用下面程式碼指定字符集編碼即可, 2、資料庫亂碼 這種亂碼會使你插入資料庫
h5傳中文引數亂碼問題
獲取url中引數函式,有可能會有中文引數,這時就需要用decodeURI解碼下 const getUrlParam = function (name) { var url = location.href; //獲取url中"?"符後的字串 if (url.inde
location.href 傳中文引數亂碼問題
傳中文查詢亂碼問題 則需要對要傳的引數進行二次編碼 例如 window.location.href ="reg.html?mid="+mid+""; 這樣子則會亂碼 改成 window.location.href ="reg.html?mid="+
解決ajax get方式提交中文引數亂碼問題
https://blog.csdn.net/memoryzxj/article/details/50715633 一般情況下, 傳送 encodeURIComponent(parmeName)+"="+encodeURIComponent(parmeValue); 接收時, 直接 String
Http協議中關於請求與響應中文引數亂碼問題詳解
一、請求 表單裡的引數是字元,在資料傳輸的過程中編碼為utf-8的位元組,tomcat中預設以iso-8859-1的方式解碼,所以必須要修改解碼是查詢的碼錶: 如果是post請求,在獲取引數程式碼之
關於window.location.href 傳中文引數 亂碼問題
傳中文查詢亂碼問題 則需要對要傳的引數進行二次編碼 例如 window.location.href ="/xx.jsp?name="+name+""; 這樣子則會亂碼 改成 window.location.href ="/xx.jsp?name="+ encodeUR
ajax get請求中文引數亂碼解決
問題描述:使用ajax向後臺傳中文引數時出現亂碼 解決方案: 第一種方法: 由於tomcat預設的字符集是ISO-8859-1,修改Tomcat中的server.xml,在port為8080(也可以是不同的埠)的Connector中加入屬性: URIEncoding="
SpringMVC學習系列-後記 解決GET請求時中文亂碼的問題
之前專案中的web.xml中的編碼設定: <filter> <filter-name>CharacterEncoding</filter-name> <filter-class>org.springframework.w
java後臺解決get請求url中文引數亂碼
解決的程式碼如下 String keyword = request.getParameter("keyword"); keyword = new String(keyword.getBytes("iso-8859-1"), "utf-8"); get請求提交的引數是在位址列
struts2傳中文引數到action亂碼解決方法
在做專案時,由於需要表單提交時,將中文引數傳到action進行處理。雖然我的jsp與action的編碼格式都為UTF-8。但是 中文引數傳遞到action時,已然變為亂碼。於是,我找到一種決解方法。 首先,通過js將中文引數轉碼 如:var cou_year = encod
ASP.NET開發過程中遇到GET請求中文引數亂碼問題的解決辦法
直接上程式片碼 頁面請求部分 (使用 encodeURI方法轉換中文請求內容 ) : var URL = "http://localhost:8080/index.aspx?keyword=" + encodeURI($("#_keyword").val()); 後臺接
URL傳中文引數導致亂碼的解決方案之encodeURI
[size=large] 通過URL傳中文引數時,在服務端後臺獲取到的值往往會出現亂碼。解決方案有很多種。本文介紹如何通過encodeURI來解決中文亂碼問題。 首先,在前端頁面準備引數的時候,需要對中文引數進行encode處理: var url = 'He
SpringMVC 解決GET請求時中文亂碼的問題
專案中的web.xml中的編碼設定: <filter> <filter-name>CharacterEncoding</filter-name> <filter-class>org.spr
JSP內建物件(包括request和response)以及解決url傳中文引數出現亂碼問題
一、內建物件簡介1、JSP內建物件是Web容器建立的一組物件,不使用new關鍵字就可以使用的內建物件。例如:out物件 <% int[] value={60,70,80}; for(int i:value){ out.println
中文亂碼 encodeURI來解決URL傳遞時的中文問題
影響 文字 ring class detail pla 解碼 http 效果 解決中文亂麻問題,頁面端發出的數據作兩次encodeURI var name="張三"; encodeURI(encodeURI(name)); 後臺解碼: URLDecoder.dec
關於springMVC中GET請求時出現中文亂碼的問題
專案中的web.xml中的編碼設定為: <filter> <filter-name>characterEncodingFilter</filter-name> <filter-class>org.sprin
js 連結傳入中文引數亂碼解決
傳入時,可能出現中文的引數用encodeURI進行兩次轉碼,如: lethref="http://www.zzdblog.cn?keyword='+encodeURI(encodeURI(keywordCH))'"; 接受時,使用decodeURI將引數進行解碼,如: l
JavaWeb解決url中中文引數亂碼以及cookie中中文亂碼問題
今天來專門寫一篇博文記錄JavaSE中的URLEncoder類,因為已經兩次用這個類解決了自己遇到的棘手問題。第一次是之前做視訊網站的搜尋功能的時候,第二次是今天在做登入功能登入後錄入中文cookie時出現java.lang.IllegalArgumentEx