2021年06月19日
川俣晶の縁側ソフトウェア技術雑記total 4808 count

.NET Core/5/6でSystem.Text.Encoding.DefaultがシフトJISではなくUTF8を返す

Written By: 川俣 晶連絡先

問題 §

 .NET Core/5/6でSystem.Text.Encoding.DefaultがシフトJISではなくUTF8を返す

原因 §

 仕様 (.NET Coreによる破壊的な仕様変更)

解決 §

 System.Text.Encoding.Defaultを使用しないでエンコーディングを取得する。

 以下の手順で行う。

  1. Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);を事前に呼び出しておく。
  2. ソースに"[DllImport("kernel32.dll")][ResourceExposure(ResourceScope.None)]internal static extern int GetACP();"を入れてP/Invoke経由でWindows APIのGetACPを呼べるようにしておく
  3. System.Text.Encoding.Defaultの代わりにSystem.Text.Encoding.GetEncoding(GetACP());でエンコーディングを取得する

補足 §

 GetACP()はWindowsのANSI code page(ACP)を取得する。つまり、Unicode前のレガシーな文字エンコーディングの情報を取得する。これは、基本的にSystem.Text.Encoding.Defaultで取得できる情報をイコールになる(はず)である。

 これは現在のプログラミングではほぼ不要の情報だが、一部の機能(例、cmd.exe)などはこの情報で動作している。それらと互換を取るには必要となる。

Facebook

キーワード【 川俣晶の縁側ソフトウェア技術雑記
【技術雑記】の次のコンテンツ
2021年
08月
30日
Mail Enableでmagsite2発などの一部のメールの送信ができない
3days 0 count
total 3194 count
【技術雑記】の前のコンテンツ
2021年
06月
19日
64bit WindowsなのにKERNEL64.DLLが見つからない
3days 0 count
total 6195 count

このコンテンツを書いた川俣 晶へメッセージを送る

[メッセージ送信フォームを利用する]

メッセージ送信フォームを利用することで、川俣 晶に対してメッセージを送ることができます。

この機能は、100%確実に川俣 晶へメッセージを伝達するものではなく、また、確実に川俣 晶よりの返事を得られるものではないことにご注意ください。

このコンテンツへトラックバックするためのURL

https://mag.autumn.org/tb.aspx/20210619084646
サイトの表紙【技術雑記】の表紙【技術雑記】のコンテンツ全リスト 【技術雑記】の入手全リスト 【技術雑記】のRSS1.0形式の情報このサイトの全キーワードリスト 印刷用ページ

管理者: 川俣 晶連絡先

Powered by MagSite2 Version 0.36 (Alpha-Test) Copyright (c) 2004-2021 Pie Dey.Co.,Ltd.