navicat for mysql 输入中文 显示问号
使用Navicat for mysql 建表后,输入中文等相关数据后,保存再看就是??,输入几个中文显示几个? ;咨询同事 说是改字符集,但是也无效,后来发现是因为之前字符集就是latin1; 所以一系列修改后,还需要将字段的类型也改掉才可以。方法如下。
操作方法
- 01
首先修改mysql字符集,这个有说改配置文件,但是我这里不好用:如下: 打开my.ini配置文件(MySQL的配置文件),加入: character_set_server = utf8 大家可以试试好用与否
- 02
我用的是命令行方式修改,如下:进入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 ;
- 03
无论使用修改配置文件还是使用命令行修改字符集,修改完成后,需要重启mysql服务,这时,再用命令show VARIABLES like 'character%'; 查看当前字符集,已经生效。
- 04
由于,我们是已经建立了数据库,这时还需要在Navicat for mysql中,将数据库的字符集也改掉。 右键数据库,选择数据库属性,如图。 进入后,修改字符集为utf8
- 05
之后,还需要对每个表点击右键,选择 涉及表 ; 然后在“选项”中,将表的字符集进行修改。
- 06
这时,如果以为工作做完了,那么就大错特错了,新插入一行数据,发现,中文还是会乱码,显示 ? ; 那么还差最后一步,因为是字符集有误的情况下已经建立了表了,所以,我们还需要将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; 如图,其中,红框中是根据自己实际情况需要修改的。
- 07
这时候,我们再次进入表中,修改乱码的数据为中文,保存后,生效,不再乱码!