url傳遞中文引數

2021-10-08 23:24:46 字數 2357 閱讀 5106

// 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...