数据库存储中文数据后出现乱码究竟该如何检查并修复字符集配置呢?
检查字符集配置
- 查看数据库级别字符集:不同数据库查看字符集的方式不同。对于MySQL数据库,可使用语句查看当前数据库的字符集设置。若结果不是支持中文的字符集(如plaintext复制
SHOWVARIABLESLIKE'character_set_database';
或plaintext复制utf8
),就可能是乱码的原因之一。plaintext复制utf8mb4
- 查看表级别字符集:在MySQL里,使用(将plaintext复制
SHOWCREATETABLEtable_name;
替换为实际表名)查看表的创建语句,从中能看到表使用的字符集。若表的字符集设置不合理,也会导致中文存储乱码。plaintext复制table_name
- 查看字段级别字符集:同样在MySQL中,通过查看表中各字段的详细信息,里面包含字段使用的字符集。plaintext复制
SHOWFULLCOLUMNSFROMtable_name;
修复字符集配置
数据库类型 | 操作方法 |
---|---|
MySQL | 若要修改数据库字符集,可使用 plaintext 复制 ALTERDATABASEdatabase_nameCHARACTERSETutf8mb4COLLATEutf8mb4_unicode_ci; plaintext 复制 database_name plaintext 复制 ALTERTABLEtable_nameCONVERTTOCHARACTERSETutf8mb4COLLATEutf8mb4_unicode_ci; plaintext 复制 table_name plaintext 复制 ALTERTABLEtable_nameMODIFYcolumn_nameVARCHAR(255)CHARACTERSETutf8mb4COLLATEutf8mb4_unicode_ci; plaintext 复制 table_name plaintext 复制 column_name |
PostgreSQL | PostgreSQL的字符集在创建数据库时指定,若要更改数据库字符集,需重建数据库。先备份数据,然后删除原数据库,再使用正确的字符集(如 plaintext 复制 UTF8 |