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

ASP.NET 編碼轉換:UTF-8 與 GB2312 互轉完整指南

     編輯:關於ASP.NET

系統整合常面臨編碼不一:交易系統用 UTF-8,舊系統用 GB2312。ASP.NET 提供多層級編碼控制機制。

1. 整站層級:web.config

<globalization requestEncoding="utf-8" responseEncoding="utf-8" />

影響所有頁面的 Request/Response 預設編碼。

2. 單一頁面:Page_Load 設定 Response

protected void Page_Load(object sender, EventArgs e)
{
    Response.ContentEncoding = Encoding.GetEncoding("gb2312");
    // 之後輸出的中文即為 GB2312
}

3. 代碼層級:字串/位元組陣列互轉

string utf8Str = "document.write('你好');";

// UTF-8 → GB2312
Encoding utf8 = Encoding.UTF8;
Encoding gb2312 = Encoding.GetEncoding("gb2312");

byte[] utf8Bytes = utf8.GetBytes(utf8Str);
byte[] gbBytes = Encoding.Convert(utf8, gb2312, utf8Bytes);
char[] gbChars = new char[gb2312.GetCharCount(gbBytes)];
gb2312.GetChars(gbBytes, 0, gbBytes.Length, gbChars, 0);
string gbStr = new string(gbChars);
// gbStr 現為 GB2312 編碼字串

4. 通用轉換輔助方法

public static string ConvertEncoding(string input, string fromEncoding, string toEncoding)
{
    Encoding from = Encoding.GetEncoding(fromEncoding);
    Encoding to = Encoding.GetEncoding(toEncoding);
    byte[] fromBytes = from.GetBytes(input);
    byte[] toBytes = Encoding.Convert(from, to, fromBytes);
    return to.GetString(toBytes);
}

// 用法
string gb = ConvertEncoding(utf8Str, "utf-8", "gb2312");
string utf8 = ConvertEncoding(gb, "gb2312", "utf-8");

常見編碼名稱

  • utf-8、utf-16、gb2312、big5、iso-8859-1、ascii
  • .NET Core / .NET 5+ 建議用 Encoding.RegisterProvider(CodePagesEncodingProvider.Instance) 並引用 System.Text.Encoding.CodePages 套件支援更多編碼。

避坑指南

  1. 資料庫連接字串指定 CharSet=utf8 (MySQL) 或確認資料庫欄位 Collation。
  2. 前端 `` 必須與 Response.ContentEncoding 一致。
  3. 檔案讀寫明確指定 Encoding,勿依賴預設值。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved