private string connstr = "server=127.0.0.1;user id=root; password=; database=ginliar_db; pooling=false;charset=gbk;allow zero datetime=true";
private void GetDate()
{
try
{
strconn = "select 型号,价格 from goods";
myconn = new MySqlConnection(connstr);
sqlda = new MySqlDataAdapter(strconn, myconn);
ds.Clear();
sqlda.Fill(ds, "goods");
System.Text.Encoding.GetEncoding("gb2312").GetString(System.Text.Encoding.GetEncoding("iso-8859-1").GetBytes(row[1].ToString()));
dataGridView1.DataSource = ds.Tables[0].DefaultView;
dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells;
}
catch
{
MessageBox.Show("网络繁忙,请稍侯重试!", "系统提示", MessageBoxButtons.OK);
}
}GV里显示的数据为中文正常但GV的表头就是型号、价格乱码了。请教下解决方法
问题是不出在这了,你上面设置的gbk,下面又变成gb2312,然后数据库的编码是什么也不知道
/// <summary>
/// 转换当前表中所有字符字段为中文编码
/// </summary>
/// <param name="dt">要转换表</param>
/// <returns></returns>
public static DataTable ConvertTableCH(DataTable dt)
{
try
{
if(dt.Rows.Count <1)
{
return dt;
} int DTRowLen = dt.Rows.Count;
int DTColLen = dt.Columns.Count; for(int i=0;i<=DTRowLen-1;i++)
{
for(int j=0;j<=DTColLen-1;j++)
{
if(dt.Rows[i][dt.Columns[j]].GetType().Name.ToLower() == "string")
{
dt.Rows[i][dt.Columns[j].ColumnName] = PublicFun.ConvertCH(dt.Rows[i][dt.Columns[j].ColumnName].ToString());
}
}
}
return dt;
}
catch
{
return dt;
}
} /// <summary>
/// 转换当前表中所有字符字段为英文编码
/// </summary>
/// <param name="dt">要转换表</param>
/// <returns></returns>
public static DataTable ConvertTableEN(DataTable dt)
{
try
{
if(dt.Rows.Count <1)
{
return dt;
} int DTRowLen = dt.Rows.Count;
int DTColLen = dt.Columns.Count; for(int i=0;i<=DTRowLen-1;i++)
{
for(int j=0;j<=DTColLen-1;j++)
{
if(dt.Rows[i][dt.Columns[j]].GetType().Name.ToLower() == "string")
{
dt.Rows[i][dt.Columns[j].ColumnName] = PublicFun.ConvertEN(dt.Rows[i][dt.Columns[j].ColumnName].ToString());
}
}
}
return dt;
}
catch
{
return dt;
}
}
/// <summary>
/// 转换当前信息为中文编码
/// </summary>
/// <param name="OrgString">编码前信息</param>
/// <returns>编码后信息</returns>
public static string ConvertCH(string OrgString)
{
if(OrgString == null || OrgString.Trim() == "")
{
return "";
}
Encoding Target = Encoding.GetEncoding(936);
Encoding Orginality = Encoding.GetEncoding(1252); Byte[] org = Orginality.GetBytes(OrgString);
return Target.GetString(org);
} /// <summary>
/// 转换当前信息为英文编码
/// </summary>
/// <param name="OrgString">编码前信息</param>
/// <returns>编码后信息</returns>
public static string ConvertEN(string OrgString)
{
if(OrgString == null || OrgString.Trim() == "")
{
return "";
}
Encoding Target = Encoding.GetEncoding(1252);
Encoding Orginality = Encoding.GetEncoding(936); Byte[] org = Orginality.GetBytes(OrgString);
return Target.GetString(org);
}