2019年5月19日 星期日

[.NET Core] 使用Big5編碼

[.NET Core] 使用big5編碼

問題

當使用 .Net Core 執行 Encoding.GetEncoding("big5")時會發生Exception

System.ArgumentException: ''big5' is not a supported encoding name. For information on defining a custom encoding, see the documentation for the Encoding.RegisterProvider method.'

Encoding.GetEncoding("big5")錯誤


主要是 .Net Core 的 System.Text.Encoding.dll 只保留常用編碼。
來看一下 .Net Core 包含哪些編碼

var encodings = Encoding.GetEncodings();

foreach (var item in encodings)
{
    Console.WriteLine($"DisplayName:{item.DisplayName}, CodePage: {item.CodePage}");
}

Encoding.GetEncodings()

安裝 System.Text.Encoding.CodePages

如要使用big5、gb2312等編碼,可使用nuget下載擴充套件System.Text.Encoding.CodePages
System.Text.Encoding.CodePages

或是使用Package Manager Console 輸入
Install-Package System.Text.Encoding.CodePages

註冊Provider

安裝完System.Text.Encoding.CodePages後,只要加入Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);將 Encoding Provider註冊即可使用。(如為 ASP .NET Core Web 可在Startup進行註冊)

Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
var encoding = Encoding.GetEncoding("big5");
Console.WriteLine($"DisplayName:{encoding.EncodingName}, CodePage: {encoding.CodePage}");

Big5 Encoding


如有錯誤或建議,歡迎留言指教,謝謝!!
(相關內容如有侵犯隱私或著作權,請協助通知刪除,感謝)

沒有留言:

張貼留言