Shift-JIS encoding for a netstandard library
.net, .net-core, .net-standard, character-encoding
Solution
Yes, it is possible. Reference System.Text.Encoding.CodePages package in `project.json`:
"System.Text.Encoding.CodePages": "4.0.1"
Invoke the following code prior to getting the Shift-JIS encoding:
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
And you're good to go with:
Encoding.GetEncoding("Shift-JIS")
UPDATE:
System.Text.Encoding.CodePages is not bundled in NETStandard.Library 1.6 package, but there is no problem to reference System.Text.Encoding.CodePages from your `netstandard` class library (until your class library targets `netstandard1.2` or lower).
Here is a sample solution with the code. There is a class library, which targets `netstandard1.3` and a consuming console application, which targets `netcoreapp1.0` and references the class library. The class library contains the code corresponding to retrieval of `Shift-JIS` encoding. It may also be referenced and consumed from apps targeting other frameworks.
Problem
In `net45`, `Encoding.GetEncoding("Shift-JIS")` works fine, but under `netstandard` it throws: System.ArgumentException : 'Shift-JIS' is not a supported encoding name. For information on defining a custom encoding, see the documentation for the Encoding.RegisterProvider method. The documentation it refers to mentions support via `CodePagesEncodingProvider` for .NET Core Native under UWP, but nothing for general usage with `netstandard`. So, is it possible to use Shift-JIS encoding within a `netstandard` library?