##前提・実現したいこと
Visual Studio 2019にてBase64をshift-jisでデコードしたい
##該当のソースコード
https://www.atmarkit.co.jp/ait/articles/0810/23/news136.html
を参照し、
C#
1using System; 2using System.Text; 3 4public class MyBase64str 5{ 6 private Encoding enc; 7 8 public MyBase64str(string encStr) 9 { 10 enc = Encoding.GetEncoding(encStr); 11 } 12 13 public string Encode(string str) 14 { 15 return Convert.ToBase64String(enc.GetBytes(str)); 16 } 17 18 public string Decode(string str) 19 { 20 return enc.GetString(Convert.FromBase64String(str)); 21 } 22}
C#
1static void Main(string[] args) 2 { 3 MyBase64str base64 = new MyBase64str("shift-jis"); 4 string rstStr = base64.Decode("SGVsbG8gV29ybGQggrGC8YLJgr+CzQ=="); 5 Console.WriteLine("Restore:" + rstStr); 6 }
↓期待結果
Restore:Hello World こんにちは
実行結果は、
「ハンドルされていない例外
System.ArgumentException
HResult=0x80070057
Message='shift-jis' is not a supported encoding name. For information on defining a custom encoding, see the documentation for the Encoding.RegisterProvider method.
Arg_ParamName_Name
Source=System.Private.CoreLib
スタック トレース:
at System.Text.EncodingTable.internalGetCodePageFromName(String name)
at System.Text.EncodingTable.GetCodePageFromName(String name)
at System.Text.Encoding.GetEncoding(String name)
at MyBase64str..ctor(String encStr) in C:\Users\User\source\repos\ConsoleApp_tcc_1\ConsoleApp_tcc_1\MyBase64str.cs:line 10
at ConsoleApp_tcc_1.Program.Main(String[] args) in C:\Users\User\source\repos\ConsoleApp_tcc_1\ConsoleApp_tcc_1\Program.cs:line 41
」が発生してしまいました。
##試したこと
shift-jis、shift_jis、Shift-jis、Shift-JIS、shiftjisの全て ハンドルされていない例外が発生しました。
また、utf-8、utf-16は期待通りの結果がえられています。
https://docs.microsoft.com/ja-jp/dotnet/api/system.text.encoding?view=netframework-4.8
.NET Framework と .NET Core でサポートされているエンコーディング一覧にshift-jisにチェックがついていないこと言うことは、サポート外ということなのでしょうか?
ですが、その他サイトの方々はshift-jisでも問題なくできている様に見えます。

回答2件
あなたの回答
tips
プレビュー