就说我遇到的这种情况吧,数据库中的字段如果输入中文就会自动变为“?”,看了许多网上的结局方案,个人认为不需要更改my.ini(其实是我在mysql根目录中根本没有找到这个ini文件),下面就介绍一下我的方法吧:
第一步:
使用 show variables like '%char%' 查看系统的字符集和排序方式的设定
调用 set names utf8; 令character_set_client, character_set_results , character_set_connection 都为utf8
第二步:
使用 show create database [数据库名]; 来查看数据库使用的字符编码(我这里的数据库名为:test)
40100后面是‘gbk’或‘utf8’都可以。
如果不是应该使用下面的命令进行修改:
ALTER DATABASE [数据名] DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
或者:
ALTER DATABASE [数据库名] DEFAULT CHARACTER SET gbk COLLATE gbk_chinese_ci;
第三步:
使用 show create table [表名]; 来查看数据库使用的字符编码(我这里的数据表名为:administrative_t)
如果 CHARSET 不等于‘gbk’或者‘utf8’那么就需要用下面的命令进行修改:
ALTER TABLE [表名] DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
或者:
ALTER TABLE [表名] DEFAULT CHARACTER SET gbk COLLATE gbk_chinese_ci;
现在可以试试看能否显示中文了。
如果还不可以则需要再看我们表结构中希望写入中文的字段是否像我上图中的一样除了DEFAULT ''之外没有其他修饰,如果有那么通过修改表结构的命令:
alter table [表名] modify [字段名] varchar(22) default=''; 来修改字段属性。
OK了,现在再来试试吧,至少我做到这里的时候已经可以正常显示中文了。