.NET Core 6中WPF调用Encoding.GetEncoding(1252)报错求助
解决.NET Core 6 WPF中读取1252编码CSV文件的编码缺失异常
问题根源在于.NET Core的默认编码支持策略:.NET Core仅内置UTF-8等少数通用编码,Windows-1252这类非通用编码需要额外引入编码包并注册才能使用。WinForms项目模板默认依赖了包含该编码的组件,因此无需额外配置即可正常运行,但WPF项目没有这个默认设置。
解决步骤如下:
安装编码支持包
在你的WPF项目(或共享类库项目)中安装System.Text.Encoding.CodePagesNuGet包。可通过NuGet包管理器搜索安装,或使用以下命令:
Package Manager Console命令:Install-Package System.Text.Encoding.CodePages.NET CLI命令:
dotnet add package System.Text.Encoding.CodePages注册编码提供器
在WPF应用启动时注册编码提供器,确保这段代码在调用checkCsv方法之前执行。例如在App.xaml.cs的OnStartup方法中添加:protected override void OnStartup(StartupEventArgs e) { // 注册编码提供器,启用1252等非默认编码 System.Text.Encoding.RegisterProvider(System.Text.CodePagesEncodingProvider.Instance); base.OnStartup(e); }若希望在类库内部处理,也可在类库的初始化逻辑中添加这段注册代码,避免依赖调用方配置。
验证修改
完成上述操作后,再次调用checkCsv方法,1252编码即可正常被识别,不会再抛出编码缺失的异常。
内容的提问来源于stack exchange,提问作者patsy2k
相关产品推荐
相关产品推荐

