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

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

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

C# csvファイルへの文字列書き込み

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■96820 / inTopicNo.1)  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")を使用するには
どうしたら良いでしょうか?

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

引用返信 編集キー/
■96821 / inTopicNo.2)  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) というオーバーロードがありますので、それを使って
はいかがですか?
引用返信 編集キー/
■96840 / inTopicNo.3)  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"));

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

解決済み
引用返信 編集キー/

このトピックをツリーで一括表示


トピック内ページ移動 / << 0 >>

このトピックに書きこむ