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オペレーティングシステムで実行されているときに システムのアクティブなコードページに一致するエンコーディングを返します。