首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

JavaScript 移除 HTTP 協議自動編碼的加號:正確處理 URL 解碼

     編輯:程式設計綜合問答

問題釐清

後端傳遞時間字串如 2023-01-01+12:00:00,前端收到含 +,實為 URL 編碼空格 (%20 在 application/x-www-form-urlencoded 中常編為 +)。

正確處理:使用 `decodeURIComponent`

var raw = "2023-01-01+12:00:00";
var decoded = decodeURIComponent(raw.replace(/\+/g, ' '));
// 結果: "2023-01-01 12:00:00"

原因:`decodeURIComponent` 不會自動將 + 視為空格,需先手動替換。

錯誤示範

// 僅替換第一個 +,且未處理其他編碼字符
dataNow.measurementTime.replace("+", " "); 

完整範例:解析查詢字串

function parseQuery(str) {
    return str.split('&').reduce((obj, pair) => {
        var [k, v] = pair.split('=');
        obj[decodeURIComponent(k)] = decodeURIComponent((v || '').replace(/\+/g, ' '));
        return obj;
    }, {});
}

建議

  • 後端回傳 JSON 時,**直接傳遞原始字串**,避免表單編碼導致空格變 +。
  • 前端統一使用 decodeURIComponent 處理 URL 參數,而非手動 replace。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved