首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> ASP.NET 基礎 >> 關於ASP.NET

URL 參數傳遞陷阱:加號變空格、中文亂碼的根因與正確編碼實踐

     編輯:關於ASP.NET

傳遞 DK51+700中繼站 到另一頁,接收端卻得到 DK51 700中繼口——加號被解碼為空格,「站」字因編碼不一致變成亂碼。

根因

  • URL 標準:查詢字串中空格編碼為 + 或 %20。伺服器端解碼時會將 + 還原為空格,導致原本的「+」丟失。
  • 中文編碼:發送頁與接收頁若編碼不同(如 UTF-8 vs GB2312),解碼時會產生錯誤字元。

錯誤做法

用 Replace("+", "%2B") 手工替換,再接收端替換回來——脆弱且難維護。

正確做法

// 發送端
string name = "DK51+700中繼站";
string url = "Default2.aspx?Name=" + Server.UrlEncode(name); // 或 HttpUtility.UrlEncode

// 接收端
string name = Request.QueryString["Name"]; // ASP.NET 自動 UrlDecode

Server.UrlEncode 會將 + 編為 %2B,空格編為 +,中文按當前頁面編碼(預設 UTF-8)編碼。接收端 Request.QueryString 自動解碼,確保雙邊編碼一致即可完整還原。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved