URL 中文 特殊字元 亂碼處理

2021-06-18 08:12:17 字數 1180 閱讀 1516

前提先了解瀏覽器解析url:關於不同瀏覽器對url編碼的分析 1.

encodeuricomponent 與 encodeurl區別:

encodeuri(

該函式對傳入字串中的所有非(基本字元、mark字元和保留字元)進行轉義編碼(escaping)

):;/?:@&=+$,#這些

用於分隔 uri 元件的標點符號

進行編碼 2.

js端處理:encodeuri 編碼2次  ,具體原因見下面:

jsp: urlencoder.encode(name, "utf-8")

;  

伺服器端處理:urldecoder.decode(request.getparameter("name"), "utf-8");

注意(encodeuri 編碼2次原因

):客戶端和伺服器在傳遞資料時可以用過濾器filter解決字元編碼問題,但filter只能解決post方式提交的資料。對於get方式,可以使用兩次encodeuri(encodeuri(「中文」))並在伺服器中使用urldecoder.decode(「中文」, "utf-8");

今天用ajax校驗資料時也遇到這個問題,儘管頁面、類和web容器都統一了字元編碼,提交的資料依然是亂碼,所以就採用了2次encodeuri()編碼方式,亂碼問題就解決了。

頁面var name=document.myform.username.value;

action中

string name = request.getparameter("name");

name = urldecoder.decode(name, "utf-8");//也可以new string(name.getbytes("iso8859-1"), "utf-8");

servlet返回資料時,將字元編碼設定為utf-8就可以了,因為ajax只支援utf-8

response.setcontenttype("text/xml;charset=utf-8");

printwriter out = response.getwriter();

out.print(result);

URL中特殊字元處理

如果你的表單使用get方法提交,並且提交的引數中有 等特殊符的話,如果不做處理,在service端就會將 後面的作為另外乙個引數來看待。例如 表單的action為list.jsf?act go state 5 則提交時通過request.getparameter可以分別取得act和state的值。如...

iOS中的URL處理中文亂碼

1.url編碼 ios中http請求遇到漢字的時候,需要轉化成utf 8,用到的方法是 nsstring newurlstr urlstring stringbyaddingpercentescapesusingencoding nsutf8stringencoding 2.url解碼 請求後,返回...

前端url傳特殊字元 號處理

我們時常遇到在前端js裡面url傳引數的時候,帶有特殊字元,比如 等,在進行解碼的時候出現丟失現象。例如 前端用encodeuricomponent str 進行編碼 後台用urldecoder.decode str,utf 8 進行解碼 如果str內容帶有 等特殊字元,在解碼的時候會當成空格處理,...