1. 问题描述
当我们在MySQL中输入中文时,可能会遇到无法输入或出现乱码等问题。这是因为MySQL默认使用的字符集为latin1,而它不支持中文字符。
2. 解决方案
2.1 修改MySQL字符集
修改MySQL字符集是最常见的解决方法,我们可以将MySQL的字符集修改为utf8或者utf8mb4,这两种字符集都支持中文字符。
2.1.1 查看MySQL当前字符集
我们可以首先查看MySQL当前使用的字符集,使用以下命令:
show variables like 'character%';
结果中会显示mysql的字符集为latin1。如下:
+--------------------------+--------+
| Variable_name | Value |
+--------------------------+--------+
| character_set_client | latin1 |
| character_set_connection | latin1 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | latin1 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /usr/local/mysql-5.7.21...
+--------------------------+--------+
其中character_set_database为utf8,我们需要修改的是character_set_client、character_set_connection和character_set_server的字符集,将它们都设置为utf8或utf8mb4。
2.1.2 修改MySQL字符集
我们可以选择在MySQL命令行中,修改MySQL字符集,如下所示:
set character_set_client=utf8;
set character_set_connection=utf8;
set character_set_results=utf8;
如果需要使用utf8mb4字符集,可以将上述命令中的utf8替换为utf8mb4。
2.1.3 修改配置文件
如果想要永久更改MySQL字符集,需要修改MySQL配置文件my.cnf或my.ini,在[mysqld]下添加以下内容:
[mysqld]
character-set-server=utf8
collation-server=utf8_unicode_ci
修改完成后,重启MySQL服务,使配置文件生效。
2.2 使用SET NAMES命令
另一种修改MySQL字符集的方法是使用SET NAMES命令。我们可以在连接MySQL时使用SET NAMES命令来设置字符集:
mysql -hhostname -uusername -ppassword --default-character-set=utf8 dbname
SET NAMES utf8;
这样,在此连接中,MySQL的字符集就被设置为utf8了。
3. 总结
无法输入中文或出现乱码是因为MySQL默认字符集不支持中文字符,我们可以通过修改MySQL字符集或使用SET NAMES命令来解决问题。
修改MySQL字符集是最常见的解决方案,可以在MySQL命令行中或修改配置文件来实现。而使用SET NAMES命令只是在当前连接中有效,需要每次连接MySQL时都使用该命令。