如何让.NET Core支持GB2312和GBK

在.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")就不会抛出异常了。

posted @   韩银剑  阅读(603)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示