Return to Tech/dotnet

Microsoft .NET Programming

.Net 5, .Net6(LTS)
About Shift-JIS Encoding
.NET core, 5, 6以降で shift-jisを利用する際のメモ

File: ex01.cs
// ファイル作成例
using System;
using System.IO;
using System.Text;

namespace Ex01 {
    class Program {
        static void Main(string[] args) {
            CreateTestData();
        }

        static void CreateTestData() {
            using (var writer = new StreamWriter(new FileStream("test.txt",
                FileMode.Create, FileAccess.Write, FileShare.Read),
                Encoding.GetEncoding(932))) {
                writer.WriteLine("test data 001");
            }
        }
    }
}


実行例
> dotnet runすると .net, 以下は.net6の場合

warning NETSDK1182: Visual Studio 2019では .NET 6.0ターゲット未サポート
※ビルドは可能

.net5, net6ともに以下のような結果になる

Unhandled exception.
System.NotSupportedException: No data is available for encoding 932.
For information on defining a custom encoding, 
 see the documentation for the Encoding.RegisterProvider method.
    at System.Text.Encoding.GetEncoding(Int32 codepage)
    at Ex01.Program.CreateTestData() in Program.cs:line ??
    at Ex01.Program.Main(String[] args) in Program.cs:line ??

C#
エンコーディングプロバイダを登録する
public static void RegisterProvider (System.TextEncodingProvider provider);

パラメーター
provider EncodingProvider
追加の文字エンコーディングへのアクセスを提供する EncodingProvider のサブクラス

登録されたプロバイダーがCodePagesEncodingProviderの場合
メソッドは、Windowsオペレーティングシステムで実行されているときに
システムのアクティブなコードページに一致するエンコーディングを返します。

Return to Tech/dotnet