質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

Q&A

解決済

2回答

3262閲覧

C#で文字コード変換をする (Visual Studio 2019)

Sanm

総合スコア10

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

0グッド

0クリップ

投稿2019/08/17 04:40

##前提・実現したいこと
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でも問題なくできている様に見えます。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Zuishin

2019/08/17 04:54

問題なくできます。いくつか心当たりがありますが、前回の質問を見る限りエスパー案件だと思うので、問題の診断はしません。エスパーにお任せします。
Sanm

2019/08/17 04:56

すみません、エスパー案件とは何でしょうか? 不備があれば修正いたします。
gentaro

2019/08/17 05:04

エスパー案件=回答に必要な情報が書かれていないから、相手の頭の中を読んで「質問者が何を言いたいのか?」がわかるエスパーにしか答えられない案件 て感じですね。 .NETなら、.NET Frameworkなのか.NET Coreなのか書かないとわからんよね、という意味で。 質問テンプレートには「FW/ツールのバージョンなど」を書く欄があるのに、そこを無視して「察しろ」という姿勢だと回答つきにくくなります。
Zuishin

2019/08/17 05:20

今回は「もしかして .NET Core かな」と思ったんですが、「.NET Core ですか?」と聞いてまともな返事が返ってくる気がしなかったので。
Sanm

2019/08/17 05:36

gentaro様、Zuishin様 ありがとうございます。 なるほど、エスパー案件。確かにそうですね。 また、gentaro様のコメントで基本テンプレートなるものがあることを初めて知りました。 皆様にはご迷惑おかけして申し訳ありませんでした。 次回から基本テンプレートを使用して質問するようにします。 ありがとうございました。
Sanm

2019/08/17 05:37

ちなみに.NET Core を使用しています。
guest

回答2

0

ベストアンサー

投稿2019/08/17 05:00

gentaro

総合スコア8949

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Sanm

2019/08/17 05:32

gentaro様 ご回答ありがとうございます。 まさにその通りでした。 shift-jisでの挙動の確認が取れました。 1番目の回答でしたのでベストアンサーとさせていただきます。 本当にありがとうございました。
guest

0

こちらが参考になりませんか?

投稿2019/08/17 05:02

YAmaGNZ

総合スコア10258

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Sanm

2019/08/17 05:33

YAmaGNZ様 前回に引き続きご回答ありがとうございます。 とても参考になりました。 本当にありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問