首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

C#的中文编码有关问题,求解诶

2013-04-12 
C#的中文编码问题,求解诶这是数据写入TXT的 private void button1_Click(object sender, EventArgs e){if

C#的中文编码问题,求解诶
这是数据写入TXT的
 private void button1_Click(object sender, EventArgs e)
        {
            if (!File.Exists(path))
            {
                FileStream fs1 = new FileStream(path, FileMode.Create, FileAccess.Write); //创建文件 
                StreamWriter sw = new StreamWriter(fs1,System.Text.Encoding.Default);
                sw.WriteLine(textBox1.Text.Trim() + "\t" + textBox2.Text.Trim());   //写入值
                sw.Close();
                fs1.Close();
            }
            else
            {
                StreamWriter sr = File.AppendText(path);
                sr.WriteLine(textBox1.Text.Trim() + "\t" + textBox2.Text.Trim()); //写入值
                sr.Close();
            }
            readini(path);
        }
这是读出的
 public void readini(string url)
        {
            DataTable dt = new DataTable();
            dt.Columns.Add("名称", typeof(String));
            dt.Columns.Add("指令", typeof(String));
            using (StreamReader reader = new StreamReader(url,System.Text .Encoding.Default))
            {
                while (!reader.EndOfStream)
                {
                    
                    string[] data = reader.ReadLine().Replace("\t", "\t").Split('\t');
                    DataRow dr = dt.NewRow();
                    dr[0] = data[0];
                    dr[1] = data[1];
                    dt.Rows.Add(dr);


                }
            }
            dt1 = dt;
            this.dataGridView1.DataSource = dt1;
        }

现在我在datagridbiew中读出的中文全部都是乱码,但是如果我把 using (StreamReader reader = new StreamReader(url,System.Text .Encoding.Default))改成 using (StreamReader reader = new StreamReader(url,System.Text .Encoding.unicode)),又会导致读取的时候无法Split开来,提示“索引超出了数组界限”
问题求解

[解决办法]
都指定为  UTF8

[解决办法]
我以前遇上和你一样的问题,不同是通信过程中遇到的,

System.Text.Encoding.GetEncoding("GB2312") 试试
[解决办法]
你将写入和读取的编码全部改成UTF-8试试?
[解决办法]
C#的默认编码方式是unicode...改成GB2312试试。

热点排行