<configuration>
<system.web>
<globalization
fileEncoding="utf-8"
requestEncoding="utf-8"
responseEncoding="utf-8"
culture="en-US"
uiCulture="de-DE" />
</system.web>
</configuration>
fileEncoding:.aspx/.ascx 檔案儲存編碼。requestEncoding:請求表單/QueryString 解碼方式。responseEncoding:回應輸出編碼。
<%@ Page RequestEncoding="utf-8" ResponseEncoding="utf-8" %>
全站 GB2312,但 Test.aspx 需 UTF-8:
<configuration>
<location path="Test.aspx">
<system.web>
<globalization fileEncoding="utf-8" requestEncoding="utf-8" responseEncoding="utf-8" culture="en" />
</system.web>
</location>
</configuration>
單頁指定 GB2312:
<location path="Test.aspx">
<system.web>
<globalization fileEncoding="gb2312" requestEncoding="gb2312" responseEncoding="gb2312" culture="zh-CN" />
</system.web>
</location>
對方只接受 GB2312 表單提交。頁面已加 <meta charset="gb2312"> 但瀏覽器仍顯示 UTF-8,因 ASP.NET 忽略 meta 標籤,直接送出 Content-Type: utf-8 標頭。
解法:在 Page_Load 強制設定回應編碼:
Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312")
即時生效,支付介面正常接收中文參數。
| 層級 | 設定位置 | 優先權 | 影響範圍 |
|---|---|---|---|
| 1. 檔案儲存 | Visual Studio 「另存新檔編碼」/ fileEncoding | 最高 | 原始碼讀取 |
| 2. 請求解碼 | requestEncoding / Request.ContentEncoding | 次高 | Request.Form/QueryString |
| 3. 回應編碼 | responseEncoding / Response.ContentEncoding | 次高 | HTTP 回應標頭與內容 |
| 4. Meta 標籤 | <meta charset="..."> | 最低(瀏覽器參考) | 瀏覽器渲染參考 |
Web.config 設定三碼合一:utf-8。<location> 覆寫,避免污染全站。Response.ContentEncoding,切勿混用 Response.Charset(已過時)。