1. 程式人生 > >如何讓.NET Core支持GB2312和GBK

如何讓.NET Core支持GB2312和GBK

.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