//实际上,最新mySQL以上两句已经失效,在命令行中先exit 然后重新登录可以实现这个目的
重新连接数据库,查看编码,数据表内容
1. mysql> show variables like 'character%';
MariaDB [(none)]> show variables like 'character%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8mb4 |
| character_set_connection | utf8mb4 |
| character_set_database | utf8mb4 |
| character_set_filesystem | binary |
| character_set_results | utf8mb4 |
| character_set_server | utf8mb4 |
| character_set_system | utf8 | //该行未更改,建议使用替换,这样能改的全面
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
14. mysql>use test;15. mysql> select *from messages;16. +----+-------------------------------+
17. | id | message |
18. +----+-------------------------------+
19. | 1 | 虏芒脢脭MySQL脰脨脦脛脧脭脢戮 |
20. | 2 | ??MySQL?? |
21. +----+-------------------------------+
22. 这里显示依然是乱码主要是因为之前使用的编码不同造成的,重新运行之前写的程序:java JDBCTest23. 1 ????MySQL????????
24. 2 ??MySQL??
25. 3测试MySQL编码26. 从第三条记录我们可以看到现在程序连接数据库时可以正常的添加和显示中文了 //如果从MySQL command line中仍然查询不到数据,显示数据集为空,继续完成第三步使得系统的编码和mySQL的编码一致就可以查询出来了……& 27. mysql> select * from messages;
28. +----+-------------------------------+
29. | id | message |
30. +----+-------------------------------+
31. | 1 | 虏芒脢脭MySQL脰脨脦脛脧脭脢戮 |
32. | 2 | ??MySQL?? |
33. | 3 | 娴嬭瘯MySQL缂栫爜 |
34. +----+-------------------------------+看回数据库的显示,我们会很奇怪的发现为什么显示的都是乱码,这主要是和windows下命令行的编码有关,在命令行上(命令提示符左上角图标处右键属性)查看属性->选项的当前代码页:936 (ANSI/OEM -简体中文 GBK)(本人机子上是这样显示的) 也就是说命令行上使用的是GBK编码,而我们是在程序连接时使用utf8进行添加的,所以会出现有乱码,现在我们将客户端的编码改成gb2312或gbk试一下1. mysql> show variables like 'character%';2. +--------------------------+--------------------------+
3. | Variable_name | Value |
4. +--------------------------+--------------------------+
5. | character_set_client | gb2312 |
6. | character_set_connection | gb2312 |
7. | character_set_database | utf8 |
8. | character_set_filesystem | binary |
9. | character_set_results | gb2312 |
10. | character_set_server | utf8 | //最后你会发现这个还是没有更改,见下文
11. | character_set_system | utf8 |
12. | character_sets_dir | D:\MySQL\share\charsets\ |
13. +--------------------------+--------------------------+
14. mysql>use test;15. mysql> select *from messages;16. +----+-------------------+
17. | id | message |
18. +----+-------------------+
19. | 1 | ????MySQL???????? |
20. | 2 | ??MySQL?? |
21. | 3 | 测试MySQL编码 |
22. +----+-------------------+
补充:更改character_set_server,在安装目录的bin文件夹下使用MySQLInstanceConfig.exe配置,在很多步骤中的一步(选择编码)选择第二项(使用UTF-8)或者第三项(自己设定)……更改完毕……
现在可以看到中文正常显示了(主要是因为utf8也支持中文),所以当我们使用命令行工具连接数据库的时候最好将客户端的编码改一下,如果使用GUI的话就不必了,同时修改客户端的编码之后程序依然能够正常显示(以上两点已经测试)
所以如果在程序中要显示中文的话我们可以选用utf8,gb2312,gbk这三种编码,但是如果想在命令行添加中文数据或者查看的话就需要将客户端的编码设置为gb2312或gbk了,还是那句,CMD的编码有关
注意如下:
遇到一个奇怪的mysql乱码问题,我的mysql全部已经设置成了utf-8,sql-front中文显示也是正常的,通过程序或者是FRONT都能够查找中文,就单单再mysql中是乱码。 mysql> SHOW VARIABLES LIKE 'character_set_%'; -----------------------------+ | Variable_name | Value | +--------------------------+-------------------------------------------+ | character_set_client | utf8 | | character_set_connection | utf8 | | character_set_database | utf8 | | character_set_filesystem | binary | | character_set_results | utf8 | | character_set_server | utf8 | | character_set_system | utf8 | | character_sets_dir | C:\MySQL\MySQL Server 5.0\share\charsets\ | +--------------------------+-------------------------------------------+ 8 rows in set (0.06 sec)看似都正常但是在mysql中执行select出来的中文都是乱码,sql-front正常。
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可。
自己结贴,字符就算都转成了UTF8但是控制台的字符好像一定要GBK,不知道什么原因我所有字符都是UTF8的但是要想不是乱码一定要在控制台中输入set names gbk;这样就不乱了,说实话很茫然。
mysql命令行下:
安装时是UTF8,my.ini下也改了。可使用show variables like 'character\_set\_%';查看时,发现
character_set_database=labins,character_set_server=labins
查看字符集showvariableslike'character\_set\_%';
修改字符集setcharacter_set_client=utf8;
MySQL字符集修改命令
1.修改服务器级a.临时更改:mysql>SETGLOBALcharacter_set_server=utf8;b.永久更改:shell>vi/etc/f[mysqld]default-character-set=utf8
2.修改数据库级a.临时更改:mysql>SETGLOBALcharacter_set_database=utf8;b.永久更改:改了服务器级就可以了
3.修改表级mysql>ALTERTABLEtable_nameDEFAULTCHARSETutf8;更改了后永久生效
4.修改列级修改示例:mysql>ALTERTABLE`products`CHANGE`products_model``products_model`VARCHAR(20)CHARACTERSETutf8COLLATEutf8_general_ciNULLDEFAULTNULL;更改了后永久生效5.更改连接字符集a.临时更改:mysql>SETNAMESutf8;b.永久更改:shell>vi/etc/f在[client]中增加:default-character-set=utf8
如果觉得《mysql 配置中文支持_mysql 中文支持》对你有帮助,请点赞、收藏,并留下你的观点哦!