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