在.NET Core中,默认是不支持GB2312和GBK编码的。
若果强制使用Encoding.GetEncoding(“GB2312”)的时候会抛出异常。
所以在.NET Core中如果我们要使用GB2312和GBK编码,需要给项目引入一个Nuget包:
包安装
可以使用以下方法来添加 System.Text.Encoding.CodePages:
Visual Studio环境下:
-
从“程序包管理器控制台”窗口:
-
转到“视图”>“其他窗口”>“程序包管理器控制台”
-
导航到包含
.csproj
文件的目录 -
请执行以下命令:
Install-Package System.Text.Encoding.CodePages
-
-
从“管理 NuGet 程序包”对话框中:
- 右键单击“解决方案资源管理器”>“管理 NuGet 包”中的项目
- 将“包源”设置为“nuget.org”
- 确保启用“包括预发行版”选项
- 在搜索框中输入“Swashbuckle.AspNetCore”
- 从“浏览”选项卡中选择最新的“Swashbuckle.AspNetCore”包,然后单击“安装”
Visual Studio Code环境下:
从“集成终端”中运行以下命令:
dotnet add TodoApi.csproj package Swashbuckle.AspNetCore
然后在程序启动入口添加以下代码
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
然后执行以下代码看效果:
using System.Text; // Register the CodePages encoding provider at application startup to enable using single and double byte encodings. Encoding.RegisterProvider(CodePagesEncodingProvider.Instance); // Now can create single and double byte encodings for code pages that are not available in .NET Core. Encoding encoding = Encoding.GetEncoding("GB2312"); // Western European (Windows) byte[] encodedBytes = encoding.GetBytes("String to encode");
现在再调用Encoding.GetEncoding("gb2312")就不会抛出异常了。
标签:Core,Encoding,程序包,GBK,GB2312,NET From: https://www.cnblogs.com/hyjrun/p/18025662