在js傳遞參數中含加號(+)的處理方式

一般情況下,URL 中的參數應使用 url 編碼規則,即把參數字符串中除了 -_. 之外的所有非字母數字字符都將被替換成百分號(%)後跟兩位十六進制數,空格則編碼爲加號(+)。但是對於帶有中文的參數來說,這種編碼會使編碼後的字符串變得很長。如果希望有短一點的方式對參數編碼,可以採用 base64 編碼方式對字符串進行編碼,但是 base64 編碼方式不能處理 JavaScript 中的中文,因爲 JavaScript 中的中文都是以 UTF-16 方式保存的。而 base64 只能處理單字節字符,所以不能直接用 base64 對帶有中文的 JavaScript 字符串進行編碼。但是可以通過 utf.js 這個程序中提供的 utf16to8 來將 UTF-16 編碼的中文先轉化爲 UTF-8 方式,然後再進行 base64 編碼。這樣編碼後的字符串,在傳遞到服務器端後可以直接通過 base64_decode 解碼成 UTF-8 的中文字符串。但是還有個問題需要注意。base64 編碼中使用了加號(+),而 + 在 URL 傳遞時會被當成空格,因此必須要將 base64 編碼後的字符串中的加號替換成 %2B 才能當作 URL 參數進行傳遞。否則在服務器端解碼後就會出錯。

所以我們需要做的就是encodeURI(str).replace(/\+/g,'%2B')

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章