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

ASP.NET 讀取資料庫中文亂碼解決方案:字元集對應表補充

     編輯:關於ASP.NET

在 ASP.NET 早期版本(特別是 1.x 時代)連接 MySQL 或其他資料庫時,常因字元集對應不完整導致中文顯示亂碼。核心問題在於驅動程式內建的 CharsetMap 缺少 gb2312、gbk 等簡體中文編碼的對應關係。

解決方法:擴充字元集對應表

在資料庫連接元件(如 MySQL Connector/NET 的舊版本)初始化對應表時,手動加入缺失的編碼映射:

private static void LoadCharsetMap()
{
    mapping = new Hashtable();
    mapping.Add("big5", "big5");           // 繁體中文
    mapping.Add("sjis", "sjis");           // Shift-JIS
    mapping.Add("gb2312", "gb2312");       // 簡體中文 GB2312
    mapping.Add("gbk", "gbk");             // 簡體中文 GBK(關鍵補充)
    mapping.Add("latin1", "latin1");
    mapping.Add("latin2", "latin2");
    mapping.Add("latin3", "latin3");
    mapping.Add("latin4", "latin4");
    mapping.Add("latin5", "latin5");
    mapping.Add("greek", "greek");
    mapping.Add("hebrew", "hebrew");
    mapping.Add("utf8", "utf-8");
    mapping.Add("ucs2", "UTF-16BE");
    mapping.Add("cp1251", 1251);
    mapping.Add("tis620", 874);
    mapping.Add("binary", "latin1");
    // 其他舊版註釋掉的映射可視需求啟用
}

關鍵點說明

  • gb2312 / gbk:簡體中文環境必備,缺少時中文會變成問號或亂碼。
  • big5:繁體中文環境必備。
  • utf8 / utf-8:現代專案建議統一使用 UTF-8,從資料庫、連接字串、網頁編碼、儲存檔案全鏈路一致,可徹底避免編碼問題。

現代專案的最佳實務

  1. 資料庫層:建表指定 CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci。
  2. 連接字串:加入 Charset=utf8mb4 或 CharacterSet=utf8。
  3. Web.config:<globalization requestEncoding="utf-8" responseEncoding="utf-8" />
  4. 頁面標頭:<meta charset="utf-8" />
  5. 原始碼檔案:以 UTF-8 without BOM 儲存。

補充:常見編碼對照表

資料庫編碼.NET 對應名稱適用場景
utf8mb4utf-8現代標準,支援 Emoji
gbkgbk / gb2312舊系統簡體中文
big5big5舊系統繁體中文
latin1latin1西歐語言,不支援中文

若維護舊專案無法全面改 UTF-8,補充 CharsetMap 可快速修復;新專案請直接採用 UTF-8 全鏈路,一勞永逸。

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