日期:2014-05-18  浏览次数:20391 次

asp.net 用户mysql数据库出现乱码,怎么解决??
在命令窗口里查询没有乱码??

------解决方案--------------------
编码问题 如果你的mysql是gb2312或,其他的话,,,asp.net C#一般都是utf-8,,,只有mysql和asp.net C#的编码统一才不会乱码,,,
建议你用utf-8
------解决方案--------------------
在数据库连接串中带上编码信息即可
------解决方案--------------------
连接数据库时使用utf-8
打开表时候也加utf-8
------解决方案--------------------
写入数据库的时候加上编码,读取的时候解码~
------解决方案--------------------
(1)修改 my.ini(MySQL Server Instance Configuration 文件)

# CLIENT SECTION //客户端

[client]

port=3306

[mysql]

default-character-set=gb2312


# SERVER SECTION //服务端

[mysqld]

default-character-set=gb2312 

(2)修改data目录中相应数据库目录下的db.opt配置文件

default-character-set=gb2312
default-collation=gb2312_chinese_ci

**改上面两个就可以了**

(3)数据库连接串中指定字符集
string connStr = "server=localhost;database=yourdatabase;uid=root;pwd=;Charset=gb2312;";

****************************************************************
在asp中要能显示和操作中文记录,必须在数据连接中加上OPTION=3;stmt=SET NAMES GB2312
dim conn,connstr,Sql_Server,Sql_database,Sql_userName,Sql_passWord
Sql_Server="localhost" '服务器地址
Sql_database="monitor" '数据库名
Sql_userName="root" '数据库用户名
Sql_passWord="" '数据库密码
connstr = "Driver={mysql odbc 3.51 driver};server="&Sql_Server&";database="&Sql_database&";uid="&sql_userName&";pwd="&sql_passWord&";OPTION=3;stmt=SET NAMES GB2312;"
****************************************************************

(4)在创建数据库时指定字符集

create database yourdatabase CHARACTER SET gb2312;


(5)创建表的时候指定字符集
CREATE TABLE `sys_user` (
`userid` int(11) NOT NULL auto_increment,
`account` char(20) character set gb2312 NOT NULL default '',
`username` varchar(50) character set gb2312 default NULL,
`password` varchar(64) character set gb2312 NOT NULL default '',
PRIMARY KEY (`userid`,`account`)
) ENGINE=InnoDB DEFAULT CHARSET=gb2312;

------解决方案--------------------
如果Mysql数据库是租用代理商的,那么前面(1)(2)条不管用了,不过可以用下面的方法解决


(1)在创建数据库时指定字符集
create database yourDB CHARACTER SET gb2312;
//**这一条估计也不管用,因为数据库是代理商给定的,那么还有下面三条方法

(2)创建表的时候指定字符集
CREATE TABLE `sys_user` (
`userid` int(11) NOT NULL auto_increment,
`account` char(20) character set gb2312 NOT NULL default '',
`username` varchar(50) character set gb2312 default NULL,
`password` varchar(64) character set gb2312 NOT NULL default '',
PRIMARY KEY (`userid`,`account`)
) ENGINE=InnoDB DEFAULT CHARSET=gb2312; 

(3)并且在数据结构里指定字符集为gb2312,校对规则指定为gb2312_chinese_ci(可选)

(3)连接字符串加上字符集编码
 a. asp.net:
string connStr = "server=localhost;database=yourdatabase;uid=root;pwd=;Charset=gb2312;";

 b. asp中要能显示和操作中文记录,必须在数据连接中加上OPTION=3;stmt=SET NAMES GB2312
connstr="Driver={mysql odbc 3.51 driver};server=localhost;database=yourdatabase;uid=root;pwd=;OPTION=3;stmt=SET NAMES GB2312"

(5)读出来的时候网页面里面还要同时指定字符编码 ResponseEncoding="gb2312" 

//**用gb2312比用uft8的好处.一是习惯用中文编码;二是有些系统必须用gb2312编码,习惯;三是用查询分析器的时候可以直接看到表里面的中文而不是看到乱码