用于netstandard库的Shift-JIS编码

Dre*_*kes 6 .net character-encoding .net-core .net-standard

net45,Encoding.GetEncoding("Shift-JIS")工作正常,但在netstandard它下面抛出:

System.ArgumentException:'Shift-JIS'不是受支持的编码名称.有关定义自定义编码的信息,请参阅Encoding.RegisterProvider方法的文档.

它引用的文档提到了对CodePagesEncodingProviderUWP下的.NET Core Native的支持,但没有任何通用用法netstandard.

那么,是否可以在netstandard库中使用Shift-JIS编码?

Dei*_*lan 6

对的,这是可能的。在以下位置引用System.Text.Encoding.CodePagesproject.json

"System.Text.Encoding.CodePages": "4.0.1"
Run Code Online (Sandbox Code Playgroud)

获取Shift-JIS编码之前,请调用以下代码:

Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
Run Code Online (Sandbox Code Playgroud)

和你一起去是很好的:

Encoding.GetEncoding("Shift-JIS")
Run Code Online (Sandbox Code Playgroud)

更新:

NETStandard.Library 1.6包中没有捆绑System.Text.Encoding.CodePages,但是从类库中引用System.Text.Encoding.CodePages没问题netstandard(直到您的类库目标netstandard1.2或更低版本)。

这是带有代码示例解决方案。有一个目标为类的类库netstandard1.3和一个使用netcoreapp1.0并引用该类库的使用中的控制台应用程序。类库包含对应于Shift-JIS编码检索的代码。也可以从针对其他框架的应用程序中引用和使用它。