C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

ツリー一括表示

C# csvファイルへの文字列書き込み /ストーンヘッジ (21/02/16(Tue) 15:16) #96820
Re[1]: C# csvファイルへの文字列書き込み /WebSurfer (21/02/16(Tue) 15:41) #96821
  └ Re[2]: C# csvファイルへの文字列書き込み /ストーンヘッジ (21/02/18(Thu) 09:35) #96840 解決済み


親記事 / ▼[ 96821 ]
■96820 / 親階層)  C# csvファイルへの文字列書き込み
□投稿者/ ストーンヘッジ (1回)-(2021/02/16(Tue) 15:16:54)

分類:[C#] 

C#フォームアプリケーションで文字列をcsvファイルに書き込むプログラムを作成しています。


            SaveFileDialog sfd = new SaveFileDialog();

            sfd.FileName = "書き込みファイル.ini";
            sfd.InitialDirectory = @"";
            sfd.Filter = "書き込みファイル(*.csv)|*.csv|すべてのファイル(*.*)|*.*";
            sfd.FilterIndex = 1;
            sfd.Title = "保存先のファイルを選択してください";
            sfd.RestoreDirectory = true;
            sfd.OverwritePrompt = true;
            sfd.CheckPathExists = true;

            //ダイアログを表示する
            if (sfd.ShowDialog() == DialogResult.OK)
            {
                System.IO.Stream stream;
                stream = sfd.OpenFile();
                if (stream != null)
                {
                    System.IO.StreamWriter sw = new System.IO.StreamWriter(stream);

                    sw.Write(String1);
                }

                sw.Close();
                stream.Close();
            }

上記だと文字化けしてしまうので、StreamWriterでEncoding.GetEncoding("shift_jis") を使いたいのですが、

                    System.IO.StreamWriter sw = new System.IO.StreamWriter(stream,false,System.Text.Encoding.GetEncoding("shift_jis"));

だとコード自体がエラーになってしまいます。 saveFileDialog()を活用しつつ、StreamWriterでEncoding.GetEncoding("shift_jis")を使用するには
どうしたら良いでしょうか?

初心者的質問ですいません。

[ □ Tree ] 返信 編集キー/

▲[ 96820 ] / ▼[ 96840 ]
■96821 / 1階層)  Re[1]: C# csvファイルへの文字列書き込み
□投稿者/ WebSurfer (2188回)-(2021/02/16(Tue) 15:41:24)
No96820 (ストーンヘッジ さん) に返信

> System.IO.StreamWriter sw = new System.IO.StreamWriter(stream,false,System.Text.Encoding.GetEncoding("shift_jis"));
>
> だとコード自体がエラーになってしまいます。 saveFileDialog()を活用しつつ、StreamWriterでEncoding.GetEncoding("shift_jis")を使用するには
> どうしたら良いでしょうか?

StreamWriter コンストラクタ (Stream, Encoding) というオーバーロードがありますので、それを使って
はいかがですか?
[ 親 96820 / □ Tree ] 返信 編集キー/

▲[ 96821 ] / 返信無し
■96840 / 2階層)  Re[2]: C# csvファイルへの文字列書き込み
□投稿者/ ストーンヘッジ (2回)-(2021/02/18(Thu) 09:35:37)
No96821 (WebSurfer さん) に返信
> ■No96820 (ストーンヘッジ さん) に返信
> 
>>System.IO.StreamWriter sw = new System.IO.StreamWriter(stream,false,System.Text.Encoding.GetEncoding("shift_jis"));
>>
>>だとコード自体がエラーになってしまいます。 saveFileDialog()を活用しつつ、StreamWriterでEncoding.GetEncoding("shift_jis")を使用するには
>>どうしたら良いでしょうか?
> 
> StreamWriter コンストラクタ (Stream, Encoding) というオーバーロードがありますので、それを使って
> はいかがですか?

ご回答いただきありがとうございます。
返事が遅くなってしまい申し訳ありません。
お教えの通り(Stream,Encoding)を使い下記のようにしますと、文字化けせず書き出すことができました。

System.IO.StreamWriter sw = new System.IO.StreamWriter(stream,Encoding.GetEncoding("shift_jis"));

ありがとうございました。

解決済み
[ 親 96820 / □ Tree ] 返信 編集キー/


管理者用

- Child Tree -