.NET Core で Shift-JIS を扱う

例えば .NET Core でテキストファイルを出力するとき、文字コードに Shift-JIS を指定するには System.Text.Encoding.CodePages が必要だった。

www.nuget.org

using System;
using System.IO;
using System.Text;

namespace EncodingSample
{
    class Program
    {
        static void Main(string[] args)
        {
            // エンコードプロバイダーの登録が必要
            Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);

            var path = Path.Combine(".", "result.txt");
            using (var stream = File.OpenWrite(path))
            {
                // エンコードプロバイダーを登録していなかったら
                // ArgumentException が発生してしまう
                using (var writer = new StreamWriter(stream, Encoding.GetEncoding("shift_jis")))
                {
                    writer.WriteLine("Hello,World!");
                }
            }

            Console.WriteLine("Enter で終了");
            Console.ReadLine();
        }
    }
}