ASP.NET Core中文編碼

最近在處理字串加密過程中,需要指定編碼做內容轉換,
意外踩到了 .NET Core 編碼的坑。

起因是這段程式碼:

private static string PlainTextToHex(string str)
{
    byte[] strBytes = Encoding.GetEncoding("BIG5").GetBytes(str);
    string strHEX = BitConverter.ToString(strBytes);
    strHEX = strHEX.Replace("-", "");
    return strHEX;
}


在取得 Encoding 時會出現以下錯誤訊息:
'BIG5' is not a supported encoding name.


原來是 .NET Core 僅保留最常用的編碼,
(詳細支援清單請見下方 MSDN 連結)
其他編碼器需另外安裝

使用步驟:
1. 開啟 Package Manager Console,輸入以下指令
Install-Package System.Text.Encoding.CodePages

2. 註冊編碼提供者:
需註冊後才能使用額外編碼,可將以下程式碼放在程式入口
(例如:Startup 中)
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);

做完就可以快樂使用囉~

參考來源:
1. [.NET Core] Encoding.GetEncoding(950) 取得繁體中文失效 !?
2. MSDN: Encoding Class

留言