url的路徑含有中文,必須要進行統一的uri編碼。否則後台獲取亂碼
var url=
"http://localhost:3306/day11?username='王帥'"
url=
encodeuri
(url)
;
切記:req.
getparameter
("username"
) 預設以iso-
8859
-1編碼
如果提交方式為post:
//設定的只是請求資料中實體內容的編碼
req.
setcharacterencoding
("utf-8");
//獲取
string parameter = req.
getparameter
("username");
如果提交方式為get:
//獲取
string parameter = req.
getparameter
("username");
parameter = new string
(parameter.
getbytes
("iso-8859-1"),
"utf-8"
);
3.1 前端編碼"gbk"
>
這裡指定的是前端傳輸資料給後台時,將資料編碼時所用的碼表。
後台解析資料時,也必須使用這個碼表進行解碼。否則,會出現亂碼
eg: 前端:
"gbk"
>
後台: req.
setcharacterencoding
("gbk");
//指定解析實體內容的編碼表。
eg: 前端:
"utf-8"
>
後台: req.
setcharacterencoding
("utf-8");
//指定解析實體內容的編碼表。
<
!doctype html>
"gbk"
>
insert title here<
/title>
<
/head>
"./hello" method=
"post"
>
"text" name=
"postmsg"
>
"submit" value=
"提交"
>
<
/form>
<
/body>
<
/html>
3.2 後端解碼後端獲取資料時,由於獲取的是io流資料,即資料是以二進位制的形式存在,所以要解碼。
後端解碼時要根據前端指定編碼的碼表來解碼。
前端以post的方式提交,後端指定編碼表,然後獲取資料即可。
//指定解析post資料的編碼表
req.
setcharacterencoding
("指定碼表");
//獲取資料
string msg= req.
getparameter
("msg");
前端以get方式提交,後端獲取資料,然後再手動編碼即可。
//獲取資料
string msg= req.
getparameter
("msg");
//手動解碼
msg = new string
(msg.
getbytes
("iso-8859-1"
),「」)
;
指定後台響應資料編碼用的碼表:
//在響應的響應頭上執行編碼的碼表。前端獲取資料時,就直接解碼了。
response.
setcharacterencoding
("text/html;charset=utf-8"
);
url編碼問題
url編碼規則1.字元 a z a z 0 9 和 都不會被編碼 2.將空格轉換為加號 3.將非文字內容轉換成 xy 的形式,xy是兩位16進製制的數值 可以直接使用urlencoder.encode 和urldecoder.decode 進行編碼和解碼 string s a.b c d e f g...
url中文編碼問題
1.url該編碼的編碼一定要編碼,否則如果存在空格就會報400錯誤,那麼什麼樣的url是該編碼的呢?url中有空格等特殊字元的 url中有中文的2.編碼要只對引數編碼,不要對整個url進行編碼,因為如果對整個url編碼的話會把url中的 等字元也進行編碼了 3.使用urlencoder.encode...
python的url編碼問題
urlencode的引數必須是dictionary d p rinturllib.urlencode m par2 b par1 a 函式urlencode不會改變傳入引數的原始編碼,也就是說需要在呼叫之前將post或get引數的編碼調整好。python編碼轉換可以參考 問題 現在模擬請求googl...