宝塔面板数据库出现乱码怎么办_统一字符集与数据库校对

酷芳姑娘_9220

酷芳姑娘_9220

2026-04-11

535人浏览

原创

MySQL中文及emoji乱码须库、表、连接三者统一为utf8mb4:宝塔默认latin1/utf8mb3不支持,仅改库或表无效;需ALTER DATABASE和CONVERT TO utf8mb4,并在PHP连接时显式设charset=utf8mb4,同时配置my.cnf的character-set-server与init_connect。

宝塔面板数据库出现乱码怎么办_统一字符集与数据库校对

数据库乱码不是“网页没设 charset”导致的,而是 MySQL 底层存不进完整中文和 emoji —— 必须把库、表、连接三者字符集统一为 utf8mb4,缺一不可。

为什么只改数据库或只改表还是乱码

宝塔新建库默认用 latin1 或 utf8(实为 utf8mb3),这两种编码都不支持 emoji 和部分生僻汉字。即使你手动把表改成 utf8mb4,但库仍是 latin1,新创建的字段、索引、临时表仍按库默认走,结果还是乱码。

  • 执行 ALTER DATABASE `your_db_name` CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci; 是第一步
  • 再对每张表执行 ALTER TABLE `table_name` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
  • 注意:不能只用 MODIFY 或 CHANGE 改单个字段,那样只改列定义,不转已有数据
  • 如果表里已有乱码数据(比如显示为问号),CONVERT TO 也无法恢复,只能从备份还原

PHP 连接时没指定 utf8mb4,查出来照样是乱码

MySQL 客户端连接默认走服务器配置,而宝塔装的 MySQL 往往没配好 init_connect,导致 PHP 即使用 mysqli 或 PDO 连上,实际连接层仍按 latin1 解析字段值。

btpanel phpsite 宝塔面板PHP网站
btpanel phpsite 宝塔面板PHP网站

宝塔面板 PHP 网站管理:站点创建、删除、启停、PHP 版本切换、域名管理、SSL证书管理、伪静态管理、数据库管理

下载
  • mysqli 方式:连接后立刻调用 $mysqli->set_charset("utf8mb4"),别信 DSN 里的 charset=utf8,那是旧版写法,无效
  • PDO 方式:DSN 中必须显式加 ;charset=utf8mb4,例如 mysql:host=localhost;dbname=test;charset=utf8mb4
  • 检查是否生效:在 PHP 里执行 SELECT CHARSET(), COLLATION(),返回应为 utf8mb4 和 utf8mb4_unicode_ci
  • 别被 phpinfo() 里的 default_charset 欺骗——它只影响 HTTP header,跟 MySQL 连接无关

MySQL 配置文件没同步,重启后又退回 latin1

宝塔面板修改数据库配置后,如果不改 MySQL 主配置文件,服务重启就会恢复默认行为,新创建的库/表又会掉回 latin1。

  • 编辑 /etc/my.cnf 或 /www/server/mysql/etc/my.cnf,在 [mysqld] 段下添加:
  • character-set-server=utf8mb4
  • collation-server=utf8mb4_unicode_ci
  • init_connect='SET NAMES utf8mb4'
  • 删掉已有的 skip-character-set-client-handshake 行(如果有)
  • 改完执行 service mysqld restart 或 bt 16 重启数据库

容易被忽略的校对规则细节

utf8mb4_unicode_ci 和 utf8mb4_general_ci 都能存 emoji,但后者在 5.7+ 已被标记为 deprecated;utf8mb4_0900_as_cs 是 MySQL 8.0 默认,区分大小写且更准,但宝塔兼容性一般,首次迁移建议用 utf8mb4_unicode_ci。

  • 建库语句里不写 COLLATE,MySQL 会按 collation-server 落,默认可能是 utf8mb4_0900_as_cs,导致旧程序排序异常
  • phpMyAdmin 或宝塔「管理」页执行 SQL 时,当前连接的 collation 可能和表不一致,务必在语句开头加 SET NAMES utf8mb4;
  • 如果用 Laravel、ThinkPHP 等框架,还要确认其数据库配置中 charset 和 collation 项也设为 utf8mb4 和 utf8mb4_unicode_ci

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

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

下载

相关标签:

宝塔面板

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

相关专题

更多
常用的mysql管理工具
常用的mysql管理工具

常用的mysql管理工具有:1、MySQL Workbench、phpMyAdmin、MySQL Shell、Navicat、DBeaver和DataGrip。更多关于mysql管理工具的问题,详情请看本专题下面的文章,php中文网欢迎大家前来学习。

2023.11.03

6610

11

phpmyadmin导入sql文件失败怎么办
phpmyadmin导入sql文件失败怎么办

在phpmyadmin导入sql文件失败时,可以尝试以下解决方案:1、检查文件权限和格式;2、确保文件字符集与数据库兼容;3、确认表结构兼容;4、检查外键约束和禁用外键检查;5、增加最大上传文件大小;6、分批导入或使用命令行导入;7、联系托管提供商寻求帮助。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.04.02

4324

7

phpmyadmin怎么改成中文
phpmyadmin怎么改成中文

通过安装中文语言包、将其上传到 phpmyadmin 目录、修改配置文件和重启 phpmyadmin,可以将 phpmyadmin 的界面改为中文。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.04.07

921

5

phpmyadmin访问不了怎么回事
phpmyadmin访问不了怎么回事

phpmyadmin 无法访问可能是以下原因造成:1、服务器问题:mysql 服务未运行或防火墙阻止访问;2、配置问题:安装/配置错误、错误的配置文件设置或缺少必要的 php 扩展;3、浏览器问题:浏览器缓存、扩展干扰或浏览器不兼容;4、其他原因:dns 问题、恶意软件或网络连接问题。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.04.07

1039

6

phpMyAdmin安装教程大全
phpMyAdmin安装教程大全

本专题整合了phpMyAdmin程序安装相关教程,阅读专题下面的文章了解更多详细内容。

2025.10.31

985

23

PHPMyadmin配置
PHPMyadmin配置

本专题整合了phpmyadmin配置相关教程,阅读专题下面的文章了解更多详细步骤。

2025.12.04

609

19

XAMPP 与 phpMyAdmin 数据库管理实操
XAMPP 与 phpMyAdmin 数据库管理实操

专注于 XAMPP 内置的 phpMyAdmin 数据库管理工具,系统讲解数据库和数据表的创建与设计、SQL 语句执行、CSV/SQL 格式数据的导入导出、定时备份与一键还原、多数据库批量管理等日常操作,帮助开发者高效管理本地 MySQL 数据。

2026.04.08

375

26

Postman身份认证怎么配置
Postman身份认证怎么配置

本专题从实际API接口调试场景出发,讲解Postman身份认证的完整配置流程,包括常见认证协议介绍、授权参数设置、访问令牌填写、OAuth 2.0授权及认证失败排查,帮助用户正确完成接口授权与访问验证。

2026.11.06

80

12

Postman请求头Headers怎么设置
Postman请求头Headers怎么设置

围绕Postman HTTP请求头配置展开,讲解Headers选项的具体使用方式,包括Key和Value参数填写、请求头信息添加、常见Header字段设置及请求头修改方法,帮助用户解决接口调试过程中遇到的请求头配置问题。

2026.11.06

40

13

热门下载

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

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
宝塔入门指引手册
宝塔入门指引手册

共0课时 | 0人学习

宝塔官方实践教程
宝塔官方实践教程

共0课时 | 0人学习