当前位置:网站首页 >  攻略

PHPCMS页面字体错位乱码?从三个高频维度快速排查修复指南

时间:2026年05月24日 11:02:37 来源:易频IT社区

第一步:排查文件编码维度——解决基础乱码问题

PHPCMS页面字体乱码大多是文件保存编码与页面声明编码不一致导致的,这是最常见的修复切入点,零技术基础也能操作。

1.1 先确认当前页面实际编码

  • 打开出现乱码的PHPCMS页面,按F12打开浏览器开发者工具(360、Edge、Chrome通用)
  • 切换到Network(网络)标签,刷新页面,点击第一个加载的HTML文件
  • 在右侧Response Headers(响应头)中找到Content-Type,查看编码格式(通常应该是UTF-8)

1.2 再检查PHPCMS核心编码配置

打开你的网站根目录下的配置文件,路径是phpcms/configs/system.php,找到以下两行代码,确保编码设置一致且为UTF-8(GBK是旧版编码,不建议修改旧配置时直接切GBK→UTF-8,会出现数据库乱码):

```php // 系统字符集 'charset' => 'utf-8', // 数据库字符集 'database_charset' => 'utf8', ```

注意:旧版PHPCMS V9的GBK版本默认charset和database_charset都是gbk,如果新修改内容或模板引入了UTF-8编码的素材,才会单独出现某块内容的乱码。

1.3 修复模板文件/内容编辑器保存的编码

如果是模板整体乱码,排查模板文件保存编码:

  • Notepad++(下载地址:https://notepad-plus-plus.org/downloads/)打开出现问题的模板文件(模板路径:phpcms/templates/default/对应的模块/对应的文件夹/xxx.html)
  • 点击Notepad++顶部菜单的编码,先选择以UTF-8(无BOM)格式打开(如果旧版GBK版本就选以ANSI格式打开)
  • 确认内容显示正常后,再点击编码→转为UTF-8(无BOM)格式(旧版GBK版本就转ANSI)
  • 保存后覆盖原来的文件即可

如果是后台发布的单篇内容乱码,排查编辑器设置:

  • 登录PHPCMS V9后台,点击设置→站点管理,编辑你的站点
  • 找到编辑器字符集选项,确保和system.php的charset一致
  • 旧版有问题的内容需要重新在后台编辑:先把后台编辑器切换到源码模式,把乱码内容手动替换成正常的(如果有备份数据库的备份内容更方便),再切换回可视化模式保存

第二步:排查字体加载维度——解决显示不全/错位问题

如果是部分文字变成方块、小方框、乱码混合正确文字,或者文字间距、行距、对齐方式完全不对,大概率是自定义字体加载失败或字体库路径错误。

2.1 检查自定义字体是否引入正确

PHPCMS页面字体错位乱码?从三个高频维度快速排查修复指南

打开出现问题的模板文件(通常是header.html、footer.html或单独的CSS文件),搜索@font-face,确保引入格式完整:

```css @font-face { font-family: 'MyCustomFont'; / 自定义字体名称,要和后面调用的一致 / src: url('/statics/css/fonts/myfont.eot'); / IE9兼容 / src: url('/statics/css/fonts/myfont.eot?iefix') format('embedded-opentype'), / IE6-IE8兼容 / url('/statics/css/fonts/myfont.woff2') format('woff2'), / 现代浏览器首选 / url('/statics/css/fonts/myfont.woff') format('woff'), / 次选 / url('/statics/css/fonts/myfont.ttf') format('truetype'), / 移动端兼容 / url('/statics/css/fonts/myfont.svgMyCustomFont') format('svg'); / 旧版IOS兼容 / font-weight: normal; font-style: normal; } / 调用自定义字体 / body { font-family: 'MyCustomFont', 'Microsoft YaHei', 'SimSun', sans-serif; } ```

这里的font-family自定义名称不能带特殊字符src路径必须用绝对路径(以/开头),如果用相对路径(./或../),可能会在页面跳转层级变化时失效。

2.2 确认字体文件存在且权限正确

用FTP工具(比如FileZilla,下载地址:https://filezilla-project.org/download.php?type=client)或宝塔面板的文件管理:

  • 检查@font-face里写的字体文件路径是否真实存在
  • 检查字体文件的权限(Windows服务器不需要,Linux服务器必须设为755):右键点击文件→权限→数字输入755→勾选“应用到子目录和文件”(如果是fonts文件夹的话)

2.3 排查字体调用的优先级

如果CSS里设置了多个字体,检查是否有优先级更高的CSS覆盖了正确的字体:

  • 按F12打开开发者工具,切换到Elements(元素)标签
  • 点击左上角的小箭头,选中出现问题的文字
  • 在右侧Computed(计算样式)中找到font-family,查看浏览器实际生效的字体
  • 如果生效的不是预期的自定义字体或系统字体(比如SimSun宋体),在右侧Styles(样式)中找到覆盖的CSS,修改或删除即可

第三步:排查数据库字符集维度——解决全站历史内容乱码

如果是升级PHPCMS版本、迁移服务器、修改system.php编码后全站内容乱码,且前两步无法修复,才需要操作数据库(操作前必须100%备份数据库!)。

3.1 用宝塔面板备份数据库

  • 登录宝塔面板,点击左侧菜单的数据库
  • 找到你的PHPCMS数据库,点击右侧的备份,等待备份完成,备份文件会自动保存在/www/backup/database/目录下

3.2 修复数据库的字符集(仅限GBK→UTF-8整体迁移/升级时操作)

如果是GBK版本迁移到UTF-8版本,按以下步骤操作:

  • 打开宝塔面板的phpMyAdmin,选择你的PHPCMS数据库
  • 点击顶部菜单的SQL,输入以下代码(把your_db_name替换成你的数据库名,v9_替换成你的PHPCMS表前缀,默认是v9_):
```sql -- 修改数据库字符集 ALTER DATABASE `your_db_name` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; -- 修改所有表的字符集(生成批量修改语句) SELECT CONCAT('ALTER TABLE `', table_name, '` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;') AS modify_table_sql FROM information_schema.tables WHERE table_schema = 'your_db_name' AND table_prefix = 'v9_'; ```
  • 执行完第一条语句后,点击SQL结果中的复制,把所有生成的ALTER TABLE语句复制出来,再单独粘贴到SQL输入框中执行
  • 执行完成后,修改system.php的charset和database_charset为utf-8(注意不是utf8mb4,旧版PHPCMS V9不支持数据库级别的utf8mb4,只支持表级)
  • 最后检查后台发布的内容是否正常,如果还有旧版乱码的小部分内容,手动修改即可

相关推荐

最新

热门

推荐

精选

标签

易频IT社区是综合性互联网IT技术门户网站,专注分享网络技术、服务器运维、网络安全、编程开发、系统架构、云计算、大数据等行业干货,实时更新IT行业资讯、零基础教程、实战案例,为IT从业者、技术爱好者提供专业的学习交流平台。

Copyright © 2021-2026 易频IT社区. All Rights Reserved. 备案号:闽ICP备2023013482号 网站地图