問題
當使用 .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.'
主要是 .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}");
}
安裝 System.Text.Encoding.CodePages
如要使用big5、gb2312等編碼,可使用nuget下載擴充套件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}");
如有錯誤或建議,歡迎留言指教,謝謝!!
(相關內容如有侵犯隱私或著作權,請協助通知刪除,感謝)
沒有留言:
張貼留言