如何修复WordPress在phpMyAdmin中由于排序规则导致的乱码?

大晨姑娘_4373

大晨姑娘_4373

2026-06-09

886人浏览

原创

直接结论:乱码不是“显示问题”,而是数据被错误解释的结果;必须先确认字段真实编码,再针对性修正排序规则,不能无脑 convert to charset。

查清字段真实编码状态,别猜

执行 SELECT HEX(column_name) FROM wp_posts LIMIT 1; 查看返回值。如果结果是类似 E4B8ADE69687(UTF-8 编码的“中文”),说明数据本身是 UTF-8 字节流,只是当前列声明为 latin1 导致 MySQL 按 latin1 解释成乱码;如果返回 C4E3BAC3 这类短十六进制串,大概率是原始 latin1 存储、后来被当 utf8mb4 读取导致的二次错解。

只有确认了真实编码,才能决定下一步是改列声明还是重建数据。

  • 真实编码是 UTF-8 → 只需 ALTER TABLE ... MODIFY ... CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
  • 真实编码是 latin1 → 需先用 CONVERT TO CHARACTER SET latin1 强制重读,再转 utf8mb4,否则会雪上加霜
  • 不确定?先备份,再在测试表上跑小样本验证

wp-config.php 中 DB_CHARSET 必须设为 utf8mb4

旧配置里常见 define('DB_CHARSET', 'utf8');,这在 MySQL 8.0+ 已被弃用,实际等价于 utf8mb3,不支持 emoji 和部分汉字。必须改成:

define('DB_CHARSET', 'utf8mb4');
define('DB_COLLATE', 'utf8mb4_unicode_ci');

注意:DB_COLLATE 不留空更稳妥,尤其当数据库已存在旧表时。

WordPress API Pro
WordPress API Pro

生产级WordPress REST API集成,用于管理文章、页面、媒体、WooCommerce产品、Elementor内容、SEO元数据、ACF及JetEngine字段

下载
  • 改完后清空 WordPress 对象缓存(如有)
  • 检查 PHP 的 default_charset 是否为 UTF-8(php.ini 中,注意是连字符,不是 utf8)
  • 若用 Nginx + PHP-FPM,确认 fastcgi_param PHP_VALUE "default_charset = UTF-8"; 已启用

修改表和列的排序规则要分步,不能跳过“连接层”

即使数据库、表、列都设成了 utf8mb4_unicode_ci,如果 phpMyAdmin 连接时没指定 charset,仍会走默认 latin1。所以必须同步设置:

  • MySQL 服务端:在 my.cnf 的 [mysqld] 下加 character-set-server = utf8mb4 和 collation-server = utf8mb4_unicode_ci
  • phpMyAdmin:在 config.inc.php 中设 $cfg['Servers'][$i]['charset'] = 'utf8mb4'; 和 $cfg['Servers'][$i]['connection_charset'] = 'utf8mb4';
  • WordPress 表结构:对关键表如 wp_posts、wp_options,逐个执行 ALTER TABLE wp_posts CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; —— 仅适用于真实编码已匹配的情况

旧数据转换失败后最常忽略的一点

很多人执行完 CONVERT TO 发现内容变成 æ–‡ 或更糟,是因为该命令会强制重新编码字节,而原始字段若已被错误解释过一次,字节已损坏。此时唯一可靠路径是:

  • 导出原始表为 SQL(选“以十六进制导出 BLOB”)
  • 用文本编辑器搜索 INSERT INTO `wp_posts` 后的十六进制值,人工比对是否符合 UTF-8 编码规律
  • 写脚本按真实编码批量重建 INSERT 语句,再导入

没有捷径。所谓“一键修复插件”多数只做表结构变更,对已错解的数据无效。

php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!

相关文章

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

phpmyadmin wordpress php

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
php文件怎么打开
php文件怎么打开

打开php文件步骤:1、选择文本编辑器;2、在选择的文本编辑器中,创建一个新的文件,并将其保存为.php文件;3、在创建的PHP文件中,编写PHP代码;4、要在本地计算机上运行PHP文件,需要设置一个服务器环境;5、安装服务器环境后,需要将PHP文件放入服务器目录中;6、一旦将PHP文件放入服务器目录中,就可以通过浏览器来运行它。

2023.09.01

10504

6

php怎么取出数组的前几个元素
php怎么取出数组的前几个元素

取出php数组的前几个元素的方法有使用array_slice()函数、使用array_splice()函数、使用循环遍历、使用array_slice()函数和array_values()函数等。本专题为大家提供php数组相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.11

6161

5

php反序列化失败怎么办
php反序列化失败怎么办

php反序列化失败的解决办法检查序列化数据。检查类定义、检查错误日志、更新PHP版本和应用安全措施等。本专题为大家提供php反序列化相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.11

2115

5

php怎么连接mssql数据库
php怎么连接mssql数据库

连接方法:1、通过mssql_系列函数;2、通过sqlsrv_系列函数;3、通过odbc方式连接;4、通过PDO方式;5、通过COM方式连接。想了解php怎么连接mssql数据库的详细内容,可以访问下面的文章。

2023.10.23

3888

4

php连接mssql数据库的方法
php连接mssql数据库的方法

php连接mssql数据库的方法有使用PHP的MSSQL扩展、使用PDO等。想了解更多php连接mssql数据库相关内容,可以阅读本专题下面的文章。

2023.10.23

4594

6

html怎么上传
html怎么上传

html通过使用HTML表单、JavaScript和PHP上传。更多关于html的问题详细请看本专题下面的文章。php中文网欢迎大家前来学习。

2023.11.03

3591

9

PHP出现乱码怎么解决
PHP出现乱码怎么解决

PHP出现乱码可以通过修改PHP文件头部的字符编码设置、检查PHP文件的编码格式、检查数据库连接设置和检查HTML页面的字符编码设置来解决。更多关于php乱码的问题详情请看本专题下面的文章。php中文网欢迎大家前来学习。

2023.11.09

5137

8

php文件怎么在手机上打开
php文件怎么在手机上打开

php文件在手机上打开需要在手机上搭建一个能够运行php的服务器环境,并将php文件上传到服务器上。再在手机上的浏览器中输入服务器的IP地址或域名,加上php文件的路径,即可打开php文件并查看其内容。更多关于php相关问题,详情请看本专题下面的文章。php中文网欢迎大家前来学习。

2023.11.13

4022

8

sprintf函数用法详解
sprintf函数用法详解

sprintf函数的用法:1、格式化字符串;2、指定输出宽度和精度;3、返回值。更多关于sprintf函数用法详解的内容,大家可以阅读下面的文章。

2023.11.27

12002

4

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
phpMyAdmin 常见问题
phpMyAdmin 常见问题

共0课时 | 0人学习

phpMyAdmin 配置文档
phpMyAdmin 配置文档

共0课时 | 0人学习

phpMyAdmin 安装文档
phpMyAdmin 安装文档

共0课时 | 0人学习