asp.net 用 mysql数据库,编码问题 ,存入数据库为问号
用 asp.net写了个插入语句,中文在插入数据库以后都变成了 问号(?)
MySqlobj mys = new MySqlobj();
string sqlstr = "insert into test (flag) VALUES ('中文')";
mys.ExecuteNonQuery(sqlstr);
#region 执行插入或删除操作
public int ExecuteNonQuery(string sqlString)
{
int ret = 0;
com.CommandText = sqlString;
com.CommandType = CommandType.Text;
try
{
ret = com.ExecuteNonQuery();
}
catch (Exception ee)
{
string ss = ee.Message;
ret = -1;
}
finally
{
com.Dispose();
}
return ret;
}
#endregion
mysql是 utf-8的
asp.net在 web.conig里面设置了
<globalization fileEncoding="utf-8" requestEncoding="utf-8" responseEncoding="utf-8"/>
------解决方案--------------------1.确定数据库是utf-8及表也是utf-8格式
2.Data Source={0};User ID={1};Password={2};Initial Catalog={3};character set=utf8;Pooling=true;Allow Zero Datetime=true
数据库链接字符加上 character set=utf8;Pooling=true;Allow Zero Datetime=true
------解决方案--------------------尽管你将MySQL数据库配置为utf8,尽管你的c#程序员运行在.net虚拟机上是unicode编码,但是许多MySQL驱动是基于ANSI Ascii编码的。
尽量使用.net平台中与ado.net配套的驱动,不要随便用第三方驱动。
------解决方案--------------------MYsql安装目录下有个my.ini文件,里面可以配置编码为utf-8。重启mysql服务应该就行了。
------解决方案--------------------
去my.ini改变字符编码utf-8
或者直接执行MySql Server Instance Config Wizard向导,改变字符编码。这个是全局的。
------解决方案--------------------mysql不熟,以前用过一个国外的免费服务器,数据库是sql server,插入中文时出现和楼主一样的问题,后来把sql语句改为:"insert into test (flag) VALUES (N'中文')" 这样就可以了。