如何讓.NET Core支持GB2312和GBK
阿新 • • 發佈:2019-02-16
.get back support net nco targe org line code
在.NET Core中,默認是不支持GB2312和GBK編碼的。
例如我們如果新建一個.NET Core控制臺項目,然後在其Main方法中使用如下代碼:
using System; using System.Text; namespace NetCoreCoding { class Program { static void Main(string[] args) { string textToEncode = "今天是個好天氣"; byte[] byteData = Encoding.GetEncoding("gb2312").GetBytes(textToEncode); Console.WriteLine("Press key to end..."); Console.ReadKey(); } } }
運行到Encoding.GetEncoding("gb2312")時,會出現異常:
異常信息如下:
‘gb2312‘ is not a supported encoding name. For information on defining a custom encoding, see the documentation for the Encoding.RegisterProvider method.
所以在.NET Core中如果我們要使用GB2312和GBK編碼,需要給項目引入一個Nuget包:
System.Text.Encoding.CodePages
然後使用Encoding.RegisterProvider方法進行註冊Provider,我們將.NET Core控制臺項目的Main方法改為如下:
using System; using System.Text; namespace NetCoreCoding { class Program { static void Main(string[] args) {string textToEncode = "今天是個好天氣"; Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);//註冊Nuget包System.Text.Encoding.CodePages中的編碼到.NET Core byte[] byteData = Encoding.GetEncoding("gb2312").GetBytes(textToEncode); Console.WriteLine("Press key to end..."); Console.ReadKey(); } } }
現在再調用Encoding.GetEncoding("gb2312")就不會拋出異常了。
如何讓.NET Core支持GB2312和GBK