none
C# - csvファイルの保存するとき、漢字がすべて文字化けします。 RRS feed

  • 質問

  • 私はW7ultimate、VS2010 Ultimate、およびC#を使用しています。
    アプリケーションは、CSVファイル内のテキストボックスにデータを保存します。

    ファイルを開くときに、漢字がすべて文字化けします。何が間違っているか、Excel,読みやすいのcsvファイルを開くたみに一行う?

    I use W7ultimate, VS2010 ultimate,  and C #.
    The application saves textBox data in a Csv file.

    When opening the file, the kanji are all Garbled. I'll put the code below. What's wrong or what to do to open the csv file in excel legible.

            #region saveData() CSV
            void saveDataCSV()
                {
                #region Local and File name variables  
                DateTime dt=DateTime.Now;
                string vs_hora=dt.Hour.ToString();
                string vs_minu=dt.Minute.ToString();
                string vs_segu=dt.Second.ToString();
                string savename=dt.ToLongDateString()+"_"+vs_hora+"時"+vs_minu+"分"+vs_segu+"秒"; //Name of File
                #endregion
    
                tb_csv.Clear();
    
                #region CABECALHO CSV
                tb_csv.AppendText("測定結果 ");
                tb_csv.AppendText(Environment.NewLine);
    
                tb_csv.AppendText("測定開始 "+","+s_dataInicial+","+s_horaInicial);
                tb_csv.AppendText(Environment.NewLine);
    
                tb_csv.AppendText("測定時間 "+","+dt_sokuteijikan.ToString());
                tb_csv.AppendText(Environment.NewLine);
    
                tb_csv.AppendText("測定間隔 "+","+vs_qtname);            
                tb_csv.AppendText(Environment.NewLine);
                #endregion
    
                #region Cabecalho da planilha
                tb_csv.AppendText("日付"+","+"時刻"+","+"経過時間");
                tb_csv.AppendText(Environment.NewLine);
                #endregion
    
                #region EXPLORER CODE
                SaveFileDialog saveFileDialog1=new SaveFileDialog();
    
                saveFileDialog1.Filter="TXT files (*.txt)|*.txt|CSV files(*.csv)|*.csv";
                saveFileDialog1.FilterIndex=2;
                saveFileDialog1.RestoreDirectory=true;
                saveFileDialog1.FileName=savename;
    
                if(saveFileDialog1.ShowDialog()==DialogResult.OK)
                    {
                    Encoding sjisX=Encoding.GetEncoding("Shift_JIS");
                    string diret=saveFileDialog1.FileName;
                    StreamWriter arquivo=new StreamWriter(diret);
                    arquivo.Write(tb_csv.Text,false,sjisX);
                    arquivo.Close();
                    MessageBox.Show("The file "+saveFileDialog1.FileName+" is saved!"); 
                    }
                #endregion
    
                GC.Collect();
                enableall();
                stopEverything();
                }
            #endregion
    

    • 編集済み Silvio Pontes 2012年6月26日 2:34 My mistake in code.
    2012年6月26日 2:22

回答

  • StreamWriterのメンバーをよく確認してみて下さい。

    //StreamWriter arquivo = new StreamWriter(diret);
    //arquivo.Write(tb_csv.Text, false, sjisX);
    
    StreamWriter arquivo = new StreamWriter(diret, false, sjisX);
    arquivo.Write(tb_csv.Text);



    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/

    2012年6月26日 2:58
    モデレータ

すべての返信

  • StreamWriterのメンバーをよく確認してみて下さい。

    //StreamWriter arquivo = new StreamWriter(diret);
    //arquivo.Write(tb_csv.Text, false, sjisX);
    
    StreamWriter arquivo = new StreamWriter(diret, false, sjisX);
    arquivo.Write(tb_csv.Text);



    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/

    2012年6月26日 2:58
    モデレータ
  • Thank you.

    動きました!

    ありがとうございます。


    silvio pontes

    2012年6月26日 13:27