读书人

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

发布时间: 2013-04-12 18:33:11 作者: rapoo

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试试。

读书人网 >C#

热点推荐