navicat for mysql 输入中文 显示问号
1、首先修改mysql字符集,这个有说改配置文件,但是我这里不好用:如下:
打开my.ini配置文件(MySQL的配置文件),加入:
character_set_server = utf8
大家可以试试好用与否
2、我用的是命令行方式修改,如下:进入cmd命令,进入mysql的bin目录下,启动mysql;
使用命令:show VARIABLES like 'character%'; 查看当前字符集,发现都是
gbk等字符集,
这时使用如下命令改变字符集:
mysql> SET character_set_client = utf8 ;
mysql> SET character_set_connection = utf8 ;
mysql> SET character_set_database = utf8 ;
mysql> SET character_set_results = utf8 ;
mysql> SET character_set_server = utf8 ;
3、无论使用修改配置文件还是使用命令行修改字符集,修改完成后,需要重启mysql服务,这时,再用命令show VARIABLES like 'character%'; 查看当前字符集,已经生效。
4、由于,我们是已经建立了数据库,这时还需要在Navicat for mysql中,将数据库的字符集也改掉。
右键数据库,选择数据库属性,如图。
进入后,修改字符集为utf8
5、之后,还需要对每个表点击右键,选择 涉及表 ;
然后在“选项”中,将表的字符集进行修改。
6、这时,如果以为工作做完了,那么就大错特错了,新插入一行数据,发现,中文还是会乱码,显示 ? ; 那么还差最后一步,因为是字符集有误的情况下已经建立了表了,所以,我们还需要将varchar类型 字段的的字符集也要改掉,进入设计表中,点中某字段,发现,数据类型果然还是Latin1,那么好,一个一个改过来即可。
当然,也可以使用命令的方式修改,命令如下:
ALTER TABLE 表名 CHANGE 列名 列名 VARCHAR( 100 ) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL;
例如,我们这个例子中就是:
ALTER TABLE role CHANGE name_cn name_cn VARCHAR( 100 ) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL;
如图,其中,红框中是根据自己实际情况需要修改的。
7、这时候,我们再次进入表中,修改乱码的数据为中文,保存后,生效,不再乱码!