cmd帮助MySQL解决乱码问题(cmd解决mysql乱码)

【cmd】帮助MySQL解决乱码问题

MySQL是当前使用最广泛的关系型数据库之一。然而,在使用MySQL时,经常会出现乱码的问题,这会对数据的正常管理和使用产生很大的影响。本文将介绍如何通过Windows命令行(cmd)解决MySQL乱码问题。

1. 修改MySQL配置文件

在MySQL安装目录下找到my.ini配置文件,使用文本编辑器打开。在[mysqld]下添加以下三行:

“`ini

[mysqld]

character_set_server=utf8mb4

collation_server=utf8mb4_unicode_ci

init_connect=’SET NAMES utf8mb4′


解释一下这三行内容:

- character_set_server:设定MySQL服务器的默认字符集。
- collation_server:设定MySQL服务器的默认排序规则。
- init_connect:连接MySQL数据库时自动执行的指令。前面的SET NAMES utf8mb4表示将本次连接使用的字符集设定为utf8mb4。

修改完成后保存并退出。

2. 重启MySQL服务

如果MySQL正在运行,则需要重启MySQL服务,使配置文件生效。打开“服务”窗口(运行 -> services.msc),找到MySQL服务,右键->重启。

如果MySQL没有在运行,则可以直接运行MySQL服务即可。

3. 创建数据库和数据表

为了演示MySQL乱码问题,先创建一个用于存储中文数据的数据库testdb。可以使用下面的SQL语句创建:

```sql
CREATE DATABASE testdb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

创建完成后,进入testdb数据库,创建一个数据表users,该数据表包含两个字段:id和name。可以使用以下SQL语句创建:

“`sql

USE testdb;

CREATE TABLE users(id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(50) NOT NULL);


4. 插入数据

现在可以向users表中插入一些数据来演示MySQL乱码问题。使用以下SQL语句插入一条中文数据:

```sql
INSERT INTO users(name) VALUES('张三');

执行完后,使用SELECT语句查询users表,可以看到输出了一些乱码:

“`sql

SELECT * FROM users;


![mysql_result.png](https://cdn.nlark.com/yuque/0/2021/png/216182/1635988015147-cb07df1c-7ede-4a3b-8979-9da3385cf5cc.png#clientId=ubf7acebe-0cbb-4&from=paste&height=213&id=ufd929688&margin=%5Bobject%20Object%5D&name=mysql_result.png&originHeight=213&originWidth=274&originalType=binary&ratio=1&size=10725&status=done&style=none&taskId=u35ec6f99-82d8-484a-a870-0392f3b3c3c&width=274)

可以看到,name字段原本存储的“张三”被乱码代替了。

5. 解决MySQL乱码问题

现在已经清楚了为什么会出现MySQL乱码问题,以及如何修改MySQL配置文件来解决。但是,如果已经有了大量存储了乱码的数据,该怎么办呢?

可以使用CONVERT函数将目前存储的数据转换为正确的编码,例如:

```sql
SELECT id, CONVERT(name USING utf8mb4) FROM users;

上述语句将name字段使用utf8mb4编码转换,并输出id和转换后的name字段,可以看到输出的结果已经变为了“张三”。

这样,就成功地解决了MySQL乱码问题。

总结:

通过修改MySQL配置文件,设置正确的字符集和排序规则,可以避免MySQL乱码问题的出现。如果已经存在乱码数据,可以使用CONVERT函数转换为正确的编码。

附:my.ini完整配置文本

“`ini

[client]

default-character-set=utf8mb4

[mysql]

default-character-set=utf8mb4

[mysqld]

character_set_server=utf8mb4

collation_server=utf8mb4_unicode_ci

init_connect=’SET NAMES utf8mb4′

# MySQL-specific options

lower_case_table_names=1


      

数据运维技术 » cmd帮助MySQL解决乱码问题(cmd解决mysql乱码)