mysql的默认状态是不支持中文的,如果使用了默认的方式连接数据库查询出来的中文就会变为?,为了让mysql能支持中文就需要给连接一个charset的参数 。
以在命令行下进行到mysql的连接为例在命令行下使用 mysql --default-character-set=gbk来连接数据库。这样就可以正确查询出表中的中文。
如果想建立一个包含中文的数据库表的话就要在建立表的时候指明所使用的字符编码,例如:
create table test (name varchar(10)) default charset=gbk2312;
这样建立出来的表才可以插入中文信息,否则在使用插入语句的时候就会报data too long 错误。
MySQL 中文字符集
首先在my.ini(my.cnf)的mysqld选项中加入default-character-set=gbk
create table tbl_test (content varchar(100)) default charset=gbk;
插入记录:
1)set names gbk;
2)insert into tbl_test (content)values('你好');
查询记录:
1)select * from tbl_test;
在插入记录的时候如果没有调用1)
结果是:
+---------+
| content |
+---------+
| ?? |
| content |
+---------+
| ?? |
如果调用了1),结果是
+---------+
| content |
+---------+
| 你好 |
+---------+
| content |
+---------+
| 你好 |
+---------+
BTW:用C#编写程序获取中文字段值的时候,如果使用mysql官方提供的Mysql.Data.dll,会出现以下错误:Character set 'gbk' is not supported
必须下载源码,然后修改CharSetMap.cs,修改LoadCharsetMap函数,去掉gbk对应那一行的注释,就不会出现这个错误了。