.NET Coreで Shift-JIS/ISO-2022-jpを扱う

2021年11月23日火曜日

.NET Core C#

t f B! P L

.NET Coreは、デフォルトでは UTF8しか扱えません。
System.Text.Encoding.GetEncoding("shift-jis")を実行すると、例外が発生します。

今回は、.NET Coreでも、Shift-JIS / ISO-2022-jpなどの文字セットを扱う方法を紹介します。

スポンサーリンク

環境

Visual Studio Community for Mac
.NET Core 2.1, 3.0, .NET (5.0)

手順

nuget パッケージを追加

nuget パッケージより、System.Text.Encoding.CodePagesを追加します。

パッケージ追加の画面で、検索窓に「System.Text.Encoding.CodePages」と入力すると、インストールパッケージが出てきます。

enter image description here

プロバイダを登録するコードを追加

処理の先頭に、以下のコードを追加します。

System.Text.Encoding.RegisterProvider(CSystem.Text.CodePagesEncodingProvider.Instance);

[補足情報] unsafeメソッドを使用する場合

System.Text.Encodingクラスの、以下の5つのメソッドは、unsafeとなっています。
使用する場合は、ビルドオプションで「unsafeコードの許可」をオンに設定する必要があります。
※許可しないとビルドエラーになります

GetByteCount
GetBytes
GetCharCount
GetChars
GetString

unsafeオプションの設定

最後に

今回の記事に関連して、MailKitを使って ISO-2022-jpでメールを送るサンプルを、以下の記事にまとめています。よかったら見て下さい。

スポンサーリンク
スポンサーリンク

このブログを検索

Profile

自分の写真
Webアプリエンジニア。 日々新しい技術を追い求めてブログでアウトプットしています。
プロフィール画像は、猫村ゆゆこ様に書いてもらいました。

仕事募集もしていたり、していなかったり。

QooQ