日期:2014-05-17  浏览次数:20577 次

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'中文')" 这样就可以了。