// send.html
var key =
'測試'
通常,如果我們直接將中文寫在url中,得到的卻是一堆亂碼(%e6%b5%8b%e8%af%95),因為這涉及到編碼問題。如果你設定了編碼方式為utf-8,則它會將中文編譯為英文,如果對應的頁面的編碼方式也為utf-8,則就直接顯示編譯後的中文
解決方法:
1.encodeuri/decodeuri
encodeuri 會替換所有的字元,但不包括以下字元,即使它們具有適當的utf-8轉義序列:
)// decodeuri:將已編碼 uri 中所有能識別的轉義序列轉換成原字元,但不能解碼那些不會被 encodeuri 編碼的內容(例如 "#")
el.innertext =
decodeuri
(val)
;
2.decodeuricomponent/encodeuricomponent當遇到測試&key=測試
這種情況,通過第一種方法就得到了2個鍵值對,這時encodeuricomponent 就可以發揮它的作用了
encodeuricomponent 轉義除了以下字元外的所有字元:a-z a-z 0-9 - _ . ! ~ * 』 ( )
// send.html
var key =
"測試&key=測試"
location.href =
`receive.html?key=$`
location.href =
`receive.html?key=$`
// receive.html
var val =location.search.
split
('=')[
1]var el = document.
getelementbyid
('content'
)el.innertext =
decodeuricomponent
(val)
;
總結:
引數中如果不存在特殊字元的話,1、2都可以;
引數中如果存在特殊字元的話,使用2;
如果是對整個url進行編譯,url中有/
、?
等特殊字元,不能進行編譯,則使用1;
escape和unescape已經被廢棄,最好別用
拓展:如果只是單純的想傳遞中文引數,可以通過sessionstorage或localstorage
// send.html
var key =
"測試&key=測試"
location.href =
`receive.html`
sessionstorage.
setitem
('key'
,key)
// receive.html
var val = sessionstorage.
getitem
('key'
)var el = document.
getelementbyid
('content'
)el.innertext = val;
URL傳遞中文引數亂碼問題
今天使用jquery傳送post請求時,傳遞的引數是中文的,接收是發現引數亂碼了!開始以為是頁面編碼問題,刪除檔案 新建,還有有此問題。後來在除錯中發現頁面獲取引數時正常,就是傳遞後獲取亂碼了,應該就是傳遞出錯了。網上搜了下,解決方法如下 1.頁面傳遞時 js傳遞 進行編碼設定 var userna...
URL請求傳遞中文引數亂碼
有的時候我們傳送url請求會帶有中文引數,例如a.jap?name 鎖,這樣直接傳送會產生中文亂碼的問題。js var url window.location.search var condition url.split alert condition 1 得到 e6 b5 b4 e7 9b 86 ...
通過URL傳遞中文引數的亂碼處理
環境 web.xml中配置了 filter filter name encodingfilter filter name filter class org.springframework.web.filter.characterencodingfilter filter class init par...