encodeuricomponent解碼方法 為什么要encodeURI兩次才不會出現(xiàn)亂碼?
為什么要encodeURI兩次才不會出現(xiàn)亂碼?世界。Encodeurl函數(shù)主要用于對URI進行轉碼。默認采用UTF-8編碼。UTF-8編碼格式:漢字由三個字節(jié)組成,每個字節(jié)轉換成十六進制編碼,同時加%
為什么要encodeURI兩次才不會出現(xiàn)亂碼?
世界。Encodeurl函數(shù)主要用于對URI進行轉碼。默認采用UTF-8編碼。UTF-8編碼格式:漢字由三個字節(jié)組成,每個字節(jié)轉換成十六進制編碼,同時加%號。假設頁面末尾的中文輸入是“中間”,則按照以下步驟進行解碼:1。第一個encodeuri,根據(jù)UTF-8模式得到字節(jié)數(shù)組,將其改為[-28,-72-83],遍歷字節(jié)碼數(shù)組,按這種方式轉換每個字節(jié),變成[E4,B8,AD],最后變成[,,]。此時,沒有多字節(jié)字符,所有字符都是單字節(jié)字符。2在第二個encodeuri編碼中,%將被視為轉義字符。%將被編碼為%。最后,將數(shù)組更改為[%E4,%B8,%ad],然后將處理后的數(shù)據(jù)發(fā)送到服務器。當應用服務器調用getparameter方法時,getparameter方法將轉到應用服務器請求參數(shù),應用服務器將處理后的數(shù)據(jù)發(fā)送到服務器,您得到的是發(fā)送的數(shù)據(jù)[%E4,%B8,%ad]。應用服務器將對此數(shù)據(jù)執(zhí)行URLDecode操作。這次應用服務器解碼,不管是根據(jù)UTF-8、GBK還是ISO-8859,它都可以得到[,,],因為它將%解析為%。并將該值返回給getparameter方法。三。用UTF-8解碼后,可以得到“medium”。好好想想。如果不編碼兩次,當服務器自動解碼時,如果按照ISO-8859解碼UTF-8碼,就會出現(xiàn)亂碼。