Http请求url参数字符集
http請求:
瀏覽器 --》服務器(tomcat應用服務器)---》應用
1,瀏覽器。
url:瀏覽器默認采用UTF-8,對URL參數中非ASCII進行百分號編碼(RFC3986“%編碼”進行編碼);
表單(get/post)請求:采用當前頁面編碼,對URL參數中的非ASCII字符進行百分號編碼;
ajax:??get方式發起的請求,IE11和chrome會根據當前頁面的默認編碼對URL參數中的非ASCII字符進行百分號編碼。而IE6不會對URL非ASCII表示的路徑信息和參數信息進行編碼。
? post方式發起的請求,即便設定了application/x-www-form-urlencoded頭信息,瀏覽器也不會對數據做任何的編碼(或者說瀏覽器不把發送的數據當做URL的一部分)。
采用encodeURIComponent()或者encodeURI()對非ASCII字符進行編碼。encodeURIComponent與encodeURI區別:
1,encodeURI方法不會對下列字符編碼??ASCII字母、數字、~!@#$&*()=:/,;?+'
2,encodeURIComponent方法不會對下列字符編碼?ASCII字母、數字、~!*() 另外還可以使用escape()對字符串進行編碼。 2,Tomcat服務器。? ?Tomcat會使用默認字符編碼“ISO-8859-1”對URL參數進行解碼。可以通過server.xml文件修改字符集編碼:
<Connector connectionTimeout="20000" port="80" protocol="HTTP/1.1" redirectPort="8443" URIEncoding="UTF-8"/>
3,應用
可以通過使用java.net.URLDecoder與java.net.URLEncoder、或者指定字符集編碼重新構造String對象。
?
一種保守的處理方法:對URL參數進行Base64編碼、解碼。
前端
$.ajax({url: "${ctx}/****?key="+encodeURIComponent(new Base64().encode(id)),type: 'GET',dataType: 'json'}).done(function (data) {if (data.success) {$this.attr("href",data.code);}});?后臺
key = new String(Base64.decodeBase64(key));
轉載于:https://www.cnblogs.com/hf-china/p/9040899.html
總結
以上是生活随笔為你收集整理的Http请求url参数字符集的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Mac003--Maven安装与环境变量
- 下一篇: Codeforces Round #48