vs2005 C#与mySql连接解决中文乱码问题
2008-11-02 19:42
881 查看
按我的这篇文章所写:
http://blog.csdn.net/cctt_1/archive/2008/11/02/3206314.aspx
这里这里读出写入英文是没有问题的。
但是我们需要读出写入中文。我在mysql的表有一项设置字符集,改为了GBK编码。
但是还是使用了我上篇文章所写的编码,结果发现插入中文时变为:???
插入中英文结合时,全部的中文变为??英文不变。
在网上搜了下,然后将上篇文章的编码改为:
private SqlAccess sqlAccess = new SqlAccess();
private void button1_Click(object sender, EventArgs e)
{
DataSet ds = sqlAccess.SelectDataSet("select * from users");
label1.Text = "";
Array alist = ds.Tables[0].Rows[0].ItemArray;
foreach(object o in alist)
{
label1.Text += o.ToString();
}
UpdateName();
}
private const string sql ="UPDATE USERS SET userName=@userName WHERE userID=@userID";
private const string userName = "@userName";
private const string userID = "@userID";
private void UpdateName()
{
int i = 1;
string name = GB2312_ISO8859("和好多岁收到暗示");
MySqlParameter[] my =
{
new MySqlParameter(userName,MySqlDbType.String),
new MySqlParameter(userID,MySqlDbType.Int32)
};
my[0].Value = name;
my[1].Value = i;
label2.Text = sqlAccess.EXESql(sql, my).ToString();
}
//写入数据库时要进行gb2312转换到iso8895
public string GB2312_ISO8859(string srcString)
{
//字符集gb2312转为iso8859
System.Text.Encoding iso8859=System.Text.Encoding.GetEncoding("iso8859-1");
System.Text.Encoding gb2312=System.Text.Encoding.GetEncoding("gb2312");
return iso8859.GetString(gb2312.GetBytes(srcString));
}
发现还是原来的问题。然后又搜了搜mysql的中文文档。发现好像column还是有字符集属性的...怎么不知道为啥这样做..太麻烦了。于是改了每一个表中需要中文的列都改为了gbk,在mysql图形界面的字段详细资料中。但是如果你是使用的mysql非图形界面..那就要辛苦的alter 吧.改完后,运行成功,再也没有??了。
发现windowsApplication使用的string是gb2312编码,但是显示的时候gb2312和iso8895-1都可以。
所以在写入数据库时要转换为iso8895-1编码。注意这里如果转为System.Text.Encoding.GetEncoding("GBK")是不可以的。
http://blog.csdn.net/cctt_1/archive/2008/11/02/3206314.aspx
这里这里读出写入英文是没有问题的。
但是我们需要读出写入中文。我在mysql的表有一项设置字符集,改为了GBK编码。
但是还是使用了我上篇文章所写的编码,结果发现插入中文时变为:???
插入中英文结合时,全部的中文变为??英文不变。
在网上搜了下,然后将上篇文章的编码改为:
private SqlAccess sqlAccess = new SqlAccess();
private void button1_Click(object sender, EventArgs e)
{
DataSet ds = sqlAccess.SelectDataSet("select * from users");
label1.Text = "";
Array alist = ds.Tables[0].Rows[0].ItemArray;
foreach(object o in alist)
{
label1.Text += o.ToString();
}
UpdateName();
}
private const string sql ="UPDATE USERS SET userName=@userName WHERE userID=@userID";
private const string userName = "@userName";
private const string userID = "@userID";
private void UpdateName()
{
int i = 1;
string name = GB2312_ISO8859("和好多岁收到暗示");
MySqlParameter[] my =
{
new MySqlParameter(userName,MySqlDbType.String),
new MySqlParameter(userID,MySqlDbType.Int32)
};
my[0].Value = name;
my[1].Value = i;
label2.Text = sqlAccess.EXESql(sql, my).ToString();
}
//写入数据库时要进行gb2312转换到iso8895
public string GB2312_ISO8859(string srcString)
{
//字符集gb2312转为iso8859
System.Text.Encoding iso8859=System.Text.Encoding.GetEncoding("iso8859-1");
System.Text.Encoding gb2312=System.Text.Encoding.GetEncoding("gb2312");
return iso8859.GetString(gb2312.GetBytes(srcString));
}
发现还是原来的问题。然后又搜了搜mysql的中文文档。发现好像column还是有字符集属性的...怎么不知道为啥这样做..太麻烦了。于是改了每一个表中需要中文的列都改为了gbk,在mysql图形界面的字段详细资料中。但是如果你是使用的mysql非图形界面..那就要辛苦的alter 吧.改完后,运行成功,再也没有??了。
发现windowsApplication使用的string是gb2312编码,但是显示的时候gb2312和iso8895-1都可以。
所以在写入数据库时要转换为iso8895-1编码。注意这里如果转为System.Text.Encoding.GetEncoding("GBK")是不可以的。
相关文章推荐
- c# 连接MySQL中文乱码问题的解决方法
- 如何用dot net连接MySQL,及中文乱码问题解决
- C# ASP.NET 连接mysql数据库存入的中文乱码问题解决方法
- .net连接mysql中文乱码问题的解决
- C# 连接 Mysql 中文乱码问题
- 【MySQL学习笔记】4:解决JDBC连接MySQL的query结果中文乱码问题
- C# 连接 Mysql 中文乱码问题
- 如何用dot net连接MySQL,及中文乱码问题解决
- Python连接MySQL中有关中文乱码的解决问题
- python django MySQLdb 连接 mysql 5.5 中文乱码问题的解决
- 解决Xshell等Linux终端连接MySQL中文乱码问题
- .net连接mysql中文乱码问题的解决
- 各种乱码问题:mysql 中文显示乱码, C#数据流写到Txt文档显示乱码问题,C# 连接mysql乱码 mysql Front 乱码,navicat for mysql乱码
- 中文乱码--MySQL5.0中文问题及JDBC数据库连接和JSP汉字编码问题解决方法总
- mysql导入导出数据中文乱码解决方法小结(1、navicat导入问题已解决,创建连接后修改连接属性,选择高级->将使用Mysql字符集复选框去掉,下拉框选择GBK->导入sql文件OK;2、phpmyadmin显示乱码的问题也解决,两步:1.将sql文件以utf8的字符集编码另存,2.将文件中sql语句中的字段字符集编码改成utf8,导入OK)
- Python连接MySQL中有关中文乱码的解决问题
- C# 连接 Mysql 中文乱码问题
- navicat8 连接mysql,查看UTF8中文乱码问题解决办法
- web 前端:连接mysql中文乱码问题的解决办法
- C#连接Oracle中文乱码问题解决方法