MySQL查看和修改字符集的方法
封面图
•
2025-11-05
•
MySQL
232
0
0
0
在 MySQL 中,字符集(Character Set)和校对规则(Collation)是数据库、表、列等对象的重要属性。正确设置字符集可以避免中文乱码等问题。以下是查看和修改 MySQL 字符集的方法。 --- ## 一、查看当前 MySQL 的字符集配置 ### 1. 查看全局字符集设置 ```sql SHOW VARIABLES LIKE 'character_set_%'; ``` 输出示例: ``` +--------------------------+----------------------------+ | 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/ | +--------------------------+----------------------------+ ``` - `character_set_server`:服务器默认字符集。 - `character_set_database`:数据库默认字符集。 - `character_set_client`:客户端发送的 SQL 语句使用的字符集。 - `character_set_results`:返回结果的字符集。 ### 2. 查看当前数据库的字符集 ```sql SHOW CREATE DATABASE your_database_name; ``` 例如: ```sql SHOW CREATE DATABASE mydb; ``` 输出: ``` CREATE DATABASE `mydb` /*!40100 DEFAULT CHARACTER SET utf8mb4 */; ``` ### 3. 查看当前表的字符集 ```sql SHOW CREATE TABLE your_table_name; ``` 例如: ```sql SHOW CREATE TABLE users; ``` 输出: ``` CREATE TABLE `users` ( ... ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; ``` ### 4. 查看当前连接的字符集 ```sql SELECT @@character_set_client, @@character_set_connection, @@character_set_results; ``` --- ## 二、修改 MySQL 的字符集 ### 1. 修改 MySQL 全局字符集(需重启) **注意:** 修改全局字符集需要重新初始化数据库或更改配置文件并重启 MySQL,否则可能无法生效。 #### 步骤: 1. 编辑 MySQL 配置文件(通常是 `/etc/my.cnf` 或 `/etc/mysql/my.cnf`): ```ini [client] default-character-set = utf8mb4 [mysqld] character-set-server = utf8mb4 collation-server = utf8mb4_unicode_ci [mysql] default-character-set = utf8mb4 ``` 2. 保存后重启 MySQL: ```bash sudo systemctl restart mysql ``` > **注意**:如果已经存在数据,直接修改配置文件并重启可能不会自动转换已有数据的字符集,需手动处理。 --- ### 2. 修改数据库字符集 ```sql ALTER DATABASE your_database_name CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; ``` --- ### 3. 修改表的字符集 ```sql ALTER TABLE your_table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; ``` > 注意:这个操作会重写表的数据,可能会导致性能问题,建议在低峰期进行。 --- ### 4. 修改列的字符集 ```sql ALTER TABLE your_table_name MODIFY column_name VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; ``` --- ## 三、常见字符集说明 | 字符集 | 说明 | |--------|------| | `utf8` | MySQL 的 `utf8` 实际上是 **3 字节** 的 UTF-8,不支持某些表情符号(如 emoji)。 | | `utf8mb4` | 支持完整的 **4 字节** UTF-8,推荐用于现代应用,尤其是涉及中文、emoji 等内容。 | | `utf8mb4_unicode_ci` | 适用于多语言支持,区分大小写不敏感。 | | `utf8mb4_general_ci` | 更快的排序方式,但不完全符合 Unicode 标准。 | --- ## 四、总结 | 操作 | 命令 | |------|------| | 查看全局字符集 | `SHOW VARIABLES LIKE 'character_set%';` | | 查看数据库字符集 | `SHOW CREATE DATABASE db_name;` | | 查看表字符集 | `SHOW CREATE TABLE table_name;` | | 修改数据库字符集 | `ALTER DATABASE db_name CHARACTER SET ...;` | | 修改表字符集 | `ALTER TABLE table_name CONVERT TO ...;` | | 修改列字符集 | `ALTER TABLE table_name MODIFY column_name ...;` | --- 如果你有具体的场景(比如导入数据时乱码、修改现有表等),欢迎告诉我,我可以提供更详细的解决方案。
上一篇:
mysql有哪些存储引擎,分别有什么优点
下一篇:
MySQL按照汉字的拼音排序
标题录入,一次不能超过6条
留言
评论