在net45
中,Encoding.GetEncoding("Shift-JIS")
工作正常,但在netstandard
下会抛出:
System.ArgumentException:'Shift-JIS'不是受支持的编码名称。有关定义自定义编码的信息,请参阅Encoding.RegisterProvider方法的文档。
它引用的文档在UWP下通过CodePagesEncodingProvider
提及对.NET Core Native的支持,但对于netstandard
的一般用法没有提及。
那么,是否可以在netstandard
库中使用Shift-JIS编码?
答案 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
编码的检索相对应的代码。它也可以从针对其他框架的应用程序中引用和使用。