我初学C#,想要尝试着写一个记事本,但是无奈写的记事本有一个很奇怪的错误:用这个程序写的文本保存后,再用这个程序打开就会是乱码,而打开用系统带的记事本写的文本不会出现乱码,用我写的记事本保存的文件用记事本打开也不会出现乱码,真的不知道怎么回事了,真心求教,这是我的代码:using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
namespace C记事本测试1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }        private void button1_Click(object sender, EventArgs e)
        {
        }        private void 新建NToolStripMenuItem_Click(object sender, EventArgs e)
        {
            textBox1.Text = "";
            openFileDialog1.FileName = "";
            saveFileDialog1.FileName = "";
        }        private void 打开OToolStripMenuItem_Click(object sender, EventArgs e)
        {
            openFileDialog1.Title = "打开文本";
            openFileDialog1.Filter = "文本文件(*.txt)|*.txt|批处理文件(*.bat)|*.bat|脚本文件(*.vbs)|*.vbs";
            openFileDialog1.FilterIndex = 1;
            openFileDialog1.InitialDirectory = "桌面";
            openFileDialog1.ShowReadOnly = true;
            openFileDialog1.ReadOnlyChecked = false;
            openFileDialog1.FileName = "";
            if (openFileDialog1.ShowDialog() == DialogResult.OK)
            {
                StreamReader Sr = new StreamReader
                (openFileDialog1.FileName, Encoding.Default);
                textBox1.Text = Sr.ReadToEnd();
                Sr.Close();
            }
        }        private void 保存SToolStripMenuItem_Click(object sender, EventArgs e)
        {
            saveFileDialog1.Title = "保存文本";
            saveFileDialog1.Filter = "文本文件(*.txt)|*.txt|批处理文件(*.bat)|*.bat|脚本文件(*.vbs)|*.vbs";
            saveFileDialog1.InitialDirectory = "桌面";
            saveFileDialog1.FileName = "";
            if (saveFileDialog1.ShowDialog() == DialogResult.OK)
            {
                StreamWriter Sw = new StreamWriter(saveFileDialog1.FileName);
                Sw.Write(textBox1.Text);
                Sw.Close();
            }
        }
    }
}

解决方案 »

  1.   

    文本文件用StreamReader和StreamWriter吧。可以指定使用的编码,使用StreamReader时还可以指定自动检测编码。
      

  2.   


     private void 保存SToolStripMenuItem_Click(object sender, EventArgs e)
            {
                saveFileDialog1.Title = "保存文本";
                saveFileDialog1.Filter = "文本文件(*.txt)|*.txt|批处理文件(*.bat)|*.bat|脚本文件(*.vbs)|*.vbs";
                saveFileDialog1.InitialDirectory = "桌面";
                saveFileDialog1.FileName = "";
                if (saveFileDialog1.ShowDialog() == DialogResult.OK)
                {
                    StreamWriter Sw = new StreamWriter(saveFileDialog1.FileName, true, Encoding.Default);
                    Sw.Write(textBox1.Text);
                    Sw.Close();
                }
            }
      

  3.   


    private void 保存SToolStripMenuItem_Click(object sender, EventArgs e)
            {
                saveFileDialog1.Title = "保存文本";
                saveFileDialog1.Filter = "文本文件(*.txt)|*.txt|批处理文件(*.bat)|*.bat|脚本文件(*.vbs)|*.vbs";
                saveFileDialog1.InitialDirectory = "桌面";
                saveFileDialog1.FileName = "";
                if (saveFileDialog1.ShowDialog() == DialogResult.OK)
                {
                    StreamWriter Sw = new StreamWriter(saveFileDialog1.FileName, true, Encoding.Default);
                    Sw.Write(textBox1.Text);
                    Sw.Close();
                }
            }
      

  4.   

    StreamWriter Sw = new StreamWriter(saveFileDialog1.FileName);
    这句你没有指定编码。
      

  5.   

    就是个编码问题啦~~~保存文件的时候格式设置成default 就可以啦~~~~~~
      

  6.   

    我们系统默认用的是GB2312,你也可以设为GB2312