用于netstandard库的Shift-JIS编码

时间:2016-10-30 17:59:20

标签: .net character-encoding .net-core .net-standard

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

  

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

它引用的文档在UWP下通过CodePagesEncodingProvider提及对.NET Core Native的支持,但对于netstandard的一般用法没有提及。

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

1 个答案:

答案 0 :(得分:5)

是的,有可能。 project.json中的参考System.Text.Encoding.CodePages包:

"System.Text.Encoding.CodePages": "4.0.1"

在获取Shift-JIS编码之前调用以下代码

Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);

你很高兴和你一起去:

Encoding.GetEncoding("Shift-JIS")

更新:

System.Text.Encoding.CodePages未绑定

NETStandard.Library 1.6 package,但您的netstandard类库中引用System.Text.Encoding.CodePages是没有问题的(直到您的类库定位netstandard1.2或更低)。

这是sample solution with the code。有一个类库,它定位netstandard1.3和一个消费控制台应用程序,它定位netcoreapp1.0并引用类库。类库包含与Shift-JIS编码的检索相对应的代码。它也可以从针对其他框架的应用程序中引用和使用。