MySQL无法输出中文字符(mysql中不能输出中文)
在MySQL中,我们时常需要输出中文字符,但是有时候在MySQL控制台输出中文字符可能会出现乱码现象,造成不便。这种情况的发生主要是由于MySQL默认字符集为Latin1,而中文字符是UTF-8编码。在此,将介绍如何解决MySQL无法输出中文字符的问题。
1. 修改MySQL字符集
在MySQL控制台输入以下指令,查看当前字符集:
SHOW VARIABLES LIKE 'character%';
如果结果为Latin1,表示当前使用的字符集为Latin1,需要修改为UTF-8,输入以下指令:
SET NAMES 'utf8';
然后,再次查看当前字符集,输入以下指令:
SHOW VARIABLES LIKE 'character%';
结果应该显示为UTF-8。
2. 修改MySQL配置文件
如果在MySQL控制台中输入中文字符仍然出现乱码,可能是MySQL配置文件中字符集设置有误。修改MySQL配置文件,以Ubuntu为例,打开以下配置文件:
sudo vi /etc/mysql/my.cnf
在[client] 和 [mysql] 两个Section下添加如下一行:
default-character-set=utf8mb4
在[mysqld] Section下添加如下两行:
character_set_server = utf8mb4
collation-server = utf8mb4_unicode_ci
保存并退出my.cnf文件。重启MySQL服务,即可看到中文字符被正确输出。
3. 修改表字段字符集
如果数据库中已经存在表,在表创建时,如果没有设置字符集,使用的就是MySQL默认的字符集。如果创建的表需要存储中文字符,需要在创建或修改表时指定相应字符集。以下是创建表时设置字符集和修改表字段字符集的示例:
创建表时指定字符集:
CREATE TABLE mytable (
id INT(11) NOT NULL AUTO_INCREMENT, name VARCHAR(255) CHARSET utf8mb4,
PRIMARY KEY (id)) ENGINE=InnoDB CHARSET=utf8mb4;
修改字段字符集:
ALTER TABLE mytable MODIFY name VARCHAR(255) CHARSET utf8mb4;
注意:修改表字段字符集后,需要重新插入数据,否则之前插入的数据仍然是原字符集的数据。
总结:
以上是解决MySQL无法输出中文字符的三种方法。选择哪种方法都可以解决乱码问题,但修改MySQL字符集只是针对当前会话启用,重启MySQL后字符集会恢复默认值,同时修改MySQL配置文件的方法对整个MySQL服务器有效。如果是在创建表时未指定字符集导致的乱码问题,修改表字段字符集是更为直接有效的解决方式。