在使用Mysql+asp.net开发时,遇到写入数据库的中文乱码问题,和让人头疼,结合本人遇到的情况参阅网上资料,解决方法不外乎以下三种
我的数据库采用的是charset=gb2312编码,asp.net为utf-8 ,js全部采用utf—8编码
方法一:检查数据库的编码
检查数据库的默认字符集、表的字符集、字段的字符集是否和写入字符的编码一致
方法二:在数据库联接字符串上定义编码方式
Mysql的连接字符串中制定字符集charset=gb2312
如: "server=localhost;user=***;database=schoolnet;port=3306;password=***;charset=gb2312"
方法三:如果还是不行可以试一下
执行数据库命令:
db.ExecuteNonQuery("set names gb2312")
通过如下指令修改数据库的字符集
alter database da_name default character set 'charset'.
客户端以 gbk格式发送 ,可以采用下述配置:
SET character_set_client='gbk'
原因如下:
SET character_set_connection='gbk'
SET character_set_results='gbk'
这个配置就等价于 SET NAMES 'gbk'。
现在对刚才创建的数据库操作
mysql> use test;
Database changed
mysql> insert into mysqlcode values(null,'php爱好者');
ERROR 1406 (22001): Data too long for column 'content' at row 1
没有指定字符集为gbk,插入时出错
mysql> set names 'gbk';
Query OK, 0 rows affected (0.02 sec)
指定字符集为 gbk
mysql> insert into mysqlcode values(null,'php爱好者');
Query OK, 1 row affected (0.00 sec)
插入成功
mysql> select * from mysqlcode;
+----+-----------+