当前位置: 首页 > news >正文

Encoding.RegisterProvider(CodePagesEncodingProvider.Instance)了解

Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
这行代码在 .NET Core / .NET 5+ 项目里的作用一句话就能说清楚:
把 Windows 专用的“代码页”编码(GB2312、Shift-JIS、Windows-1252 等)注册到程序里,否则 Encoding.GetEncoding 会抛 “'XXX' is not a supported encoding” 异常。
下面把来龙去脉、注意事项和常见坑一次性讲清。

  1. 为什么会有这行代码

  • .NET Core 设计之初要跨平台,而代码页(Code Page)是 Windows 的遗留概念,
    所以微软只把最通用的几种编码(UTF-8/16/32、ASCII、UTF-7)内置在 CoreFX 里。
  • 所有 Windows 代码页(GB2312 936、Big5 950、Shift-JIS 932、Windows-1252 1252 …)被移到一个单独的 NuGet 包:
    System.Text.Encoding.CodePages
  • 这个包默认不被引用,即使引用了也不会自动生效,必须手动把里面的
    CodePagesEncodingProvider 注册到全局编码表,否则 Encoding.GetEncoding("GB2312") 直接报错。

  1. 使用步骤(3 步即可)

  1. 安装包
    bash
    复制
    dotnet add package System.Text.Encoding.CodePages
     
  2. 程序启动时注册一次(放在 Main 方法最前面即可)
    csharp
    复制
    Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
     
  3. 后面就能正常用了
    csharp
    复制
    var enc = Encoding.GetEncoding("GB2312");   // 或 936
    var bytes = enc.GetBytes("中文");
     

  1. 常见疑问 / 坑

表格
复制
问题回答
只注册一次就行? 对,整个 AppDomain 只需一次,重复注册无害。
ASP.NET Core 放哪? Program.cs 的 Main() 里,或 Startup.ConfigureServices 顶部。
Linux / macOS 能用吗? 可以,CodePages 包是纯托管实现,不依赖 Windows API。
.NET Framework 项目需要吗? 不需要,Framework 本身就带代码页。
注册后性能影响? 仅第一次 GetEncoding 会查表,之后与内置编码一样快。
打包体积会变大多少? 大约 500 KB,只多一个 DLL。

  1. 完整示例

csharp
复制
using System;
using System.Text;class Program
{static void Main(){// 1. 注册代码页提供程序Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);// 2. 使用 GB2312 编码Encoding gb2312 = Encoding.GetEncoding("gb2312");byte[] bytes = gb2312.GetBytes("你好,代码页");Console.WriteLine(BitConverter.ToString(bytes));}
}
 

  1. 一句话总结

想在 .NET Core / .NET 5+ 里用 GB2312、Shift-JIS、Windows-1252 等老编码,
先装 System.Text.Encoding.CodePages 包,再在程序启动时写
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
即可。
http://www.zskr.cn/news/17556.html

相关文章:

  • 2025 年国内减速机厂家最新推荐排行榜:聚焦谐波 / 行星 / 直角换向器等多类型设备,精选实力厂商助力企业精准选型
  • prometheus WAL 的主要用途
  • 2025 年最新推荐金相厂家榜单:涵盖磨抛机 / 切割机 / 显微镜等设备,助力企业精准选品
  • 生产设备数据采集怎么做?主要有哪些应用?
  • 一文详解企业如何借助AI技术重构业务基因(附发展趋势、关键能力、具体策略)
  • 课后作业一
  • ESP32 wroom 32d 和 SMT32 F103C8T6 引脚图
  • 博客园登录bug
  • 2025 年低温冷水机厂家联系方式推荐:广东弘星制冷专注工业温控,提供定制设备与管家式服务
  • 主流TOP10的需求管理工具测评,教你怎么用才最高效! - RAIN
  • 精准对决:Snipaste 与 FastStone Capture 截图工具优劣势深度剖析
  • MATLAB遗传算法优化RBF网络连接权与网络结构的实现方法
  • 2025 年热缩管制造厂家最新推荐排行榜:氟橡胶 / 双壁 / 线缆标识 / 防滑花纹 / DR 耐油橡胶 / PVDF / 航插用 / 军用热缩管优质企业品牌全面盘点
  • 2025 建筑工程施工总包公司最新推荐榜:揭秘 5 家优质企业,以质量管控与创新实力引领行业发展
  • 2025 年最新推荐:高低温 / 快速温变 / 三综合 / 淋雨 / 沙尘 / 环境 / 高低温冲击 / 高低温湿热试验箱厂家排行榜
  • 2025 年蝶阀公司最新推荐:全金属硬碰硬 / 高压 / 美标 / 双偏心等各类蝶阀优质厂家榜单及选择指南
  • 2025 年火花机厂家最新推荐榜:涵盖多类型设备,助力企业精准选购优质火花机厂家 轮胎膜专用/五轴联动/三轴联动/微细孔火花机厂家推荐
  • Microsoft .NET Framework 3.5,4.5,4.8 版本下载,附Microsoft Visual C++微软官方运行库下载
  • vue3使用h函数如何封装组件和$attrs和props的区别
  • 《软件需求最佳实践》阅读笔记二
  • Kubernetes Service详解:实现服务发现与负载均衡
  • 2025 年国内优质不锈钢厂商最新推荐排行榜:含沈阳及东三省地区水箱油罐楼梯激光切割等产品服务商不锈钢水箱/油罐/水灌/油箱/楼梯/折弯厂家推荐
  • 2025 顶管源头厂家最新推荐榜单:F 型混凝土 / 水泥 / 电力 / 矩形 / 市政 / 排水 / 大口径顶管优质供应商精选
  • 2025 年 AI 教育机构最新推荐排行榜:涵盖企业 AI 培训、AI + 教育、AI 教育线下机构等领域的优质机构精选
  • Jmeter批量调用不同值参数的CSV
  • 【GitHub每日速递 251009】AI时代必备!Stagehand浏览器自动化框架解锁高效新玩法
  • C语言数据结构笔记3:Union联合体+结构体取8位Bool量 - 指南
  • 2025农机带厂家最新推荐榜:质量可靠与耐用性能兼备之选
  • 2025试验机厂家最新推荐榜:精准测量与高效检测口碑之选
  • 2025上海经济纠纷律师/民事纠纷律所最新推荐榜:专业辩护与胜诉保障口碑之选