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

ASP.NET 實現 UTF-7 轉 GB2312 編碼轉換

     編輯:ASP.NET 基礎

在處理舊系統資料遷移或特定郵件協議解析時,常需將 UTF-7 編碼字串轉為 GB2312。以下提供一個可直接使用的靜態方法,涵蓋關鍵邊界情況處理。

完整轉換方法

/// 
/// 將 UTF-7 編碼字串轉換為 GB2312
/// 
/// UTF-7 編碼的輸入字串
/// GB2312 編碼的字串
public static string Utf7ToGb2312(string str7)
{
    if (string.IsNullOrEmpty(str7)) return str7;

    // UTF-7 以 '+' 開頭表示非 ASCII 區段,若輸入以 '&' 開頭需修正
    string utf7Input = str7.StartsWith("&") ? "+" + str7.Substring(1) : str7;

    // 先用 GB2312 取得位元組陣列,再透過 Encoding.Convert 轉換
    byte[] gbBytes = Encoding.GetEncoding("gb2312").GetBytes(utf7Input);
    byte[] unicodeBytes = Encoding.Convert(Encoding.UTF7, Encoding.Unicode, gbBytes);
    
    return Encoding.Unicode.GetString(unicodeBytes);
}

關鍵技術點

  • 前綴修正:標準 UTF-7 使用 + 起始,但部分實作(如 IMAP)用 &,需自動修正。
  • 雙階段轉碼:Encoding.Convert 需指定來源(UTF7)與目標(Unicode)編碼,中介以位元組陣列傳遞。
  • 編碼獲取:Encoding.GetEncoding("gb2312") 明確指定目標編碼頁,避免系統預設值差異。

適用場景與注意

此方法適合處理郵件主旨、舊系統匯入資料等 UTF-7 內容。若輸入已為正常 Unicode 字串,直接呼叫會產生錯誤結果,建議先偵測編碼格式再決定是否轉換。.NET Core / .NET 5+ 專案需安裝 System.Text.Encoding.CodePages 並註冊 Encoding.RegisterProvider 才能使用 GB2312。

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