要修改MySQL中表的字符集以及数据库的字符集以支持中文(通常是`utf8`或者`utf8mb4`),你可以按照以下步骤进行:
1. **修改数据库字符集**:
```sql
ALTER DATABASE 数据库名称 CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
```
2. **修改表的字符集**:
对于每张需要修改的表,执行:
```sql
ALTER TABLE 表名称 CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
```
3. **修改列的字符集**:
如果需要,对于表中每个文本类型的列(比如VARCHAR, TEXT等),执行:
```sql
ALTER TABLE 表名称 CHANGE 列名称 列名称 列数据类型 CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
```
例子:
```sql
ALTER TABLE 表名称 CHANGE column_name column_name VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
```
请注意以下几点:
- `utf8mb4` 是 `utf8` 的超集,支持更多的字符,包括emoji。如果你需要存储4字节的UTF字符(比如某些表情符号),请选择`utf8mb4`。
- `utf8mb4_unicode_ci` 是大小写不敏感的校对规则,可以很好地处理Unicode字符的排序和比较。若对性能要求较高,也可以使用`utf8mb4_general_ci`,但其准确性略低。
- 在修改字符集前,请确保备份了数据,因为这些操作可能会影响现有数据。
- 修改字符集可能会影响表和索引的大小,因为不同的字符集编码方式可能有不同的存储要求。
- 涉及字符集的修改可能还需要检查和调整应用端的数据库连接字符集设置,确保应用程序连接数据库时使用正确的字符集。
- 确保你的MySQL版本支持`utf8mb4`。MySQL版本5.5.3以后开始支持这个字符集。
- 如果出现以上更改后仍然无法正确存储或显示中文,检查应用程序代码中的数据库连接配置,确保在连接时指定了正确的字符集,比如在PHP的PDO连接字符串中加入`charset=utf8mb4`。