这是一个非常重要且常见的需求,尤其是在处理中文内容时,使用UTF-8编码可以有效避免乱码问题。

织梦dedecms后台模板utf-8
(图片来源网络,侵删)

整个过程可以分为以下几个步骤:

  1. 核心原则: 确保你的网站程序数据库网页文件三者都统一使用UTF-8编码,如果三者不统一,就极有可能出现乱码。
  2. 后台设置: 在织梦后台进行正确的配置。
  3. 修改模板文件: 确保后台模板文件本身是UTF-8编码。
  4. 数据修复(如果需要): 如果是从旧版本GBK编码转换过来的,可能需要修复数据库编码。

第一步:检查并确保环境为UTF-8

在开始设置后台之前,请先确认你的网站环境是否已经是UTF-8,我们在安装织梦的时候就会选择UTF-8版本。

如何检查?

  1. 检查数据库编码:

    织梦dedecms后台模板utf-8
    (图片来源网络,侵删)
    • 登录你的网站数据库管理工具(如phpMyAdmin)。
    • 在左侧选择你的数据库名称。
    • 在右侧“操作”或“信息”区域,查看“整理”或“Collation”列,对于UTF-8,它通常显示为 utf8_general_ciutf8mb4_general_ci
  2. 检查网站程序文件编码:

    • 使用FTP或文件管理器连接到你的服务器。
    • 打开 data 目录下的 config.cache.inc.php 文件。
    • 找到 cfg_dbprefix (表前缀) 和 cfg_dbname (数据库名) 这两行,确认它们指向的是你UTF-8编码的数据库。

如果你的网站安装时就是UTF-8版本,那么这两步应该已经是正确的,如果是从GBK转换过来的,请确保转换过程完整无误。


第二步:织梦后台UTF-8核心设置

登录织梦DedeCMS后台,进行以下关键设置:

  1. 系统基本参数设置

    织梦dedecms后台模板utf-8
    (图片来源网络,侵删)
    • 在后台左侧菜单找到 【系统】 -> 【系统基本参数】
    • 切换到 【核心设置】 选项卡。
    • 找到 网站编码 这一项,确保它选择的是 UTF-8
    • 找到 GBK转UTF-8开启 这一项,请务必选择 ,如果你的网站本身就是UTF-8,开启这个选项反而可能导致问题。
    • 点击“保存”按钮。
  2. 系统基本参数设置(高级选项)

    • 【系统基本参数】 页面,切换到 【高级选项】 选项卡。
    • 找到 模板引擎标签默认关闭,根据你的需要设置,这通常与模板语法有关,与编码关系不大,但了解一下有好处。
    • 找到 发布文章时,自动提取首张图为封面 等选项,这些是功能设置,与编码无关。
    • 同样,点击“保存”。
  3. 清除缓存

    • 完成设置后,一定要去 【系统】 -> 【清除系统缓存】 页面,点击“更新系统缓存”,这能让新的设置立即生效。

第三步:后台模板文件编码(重要)

后台模板文件本身可能不是UTF-8编码(是GBK或带BOM的UTF-8),这会导致在后台编辑时出现乱码,你需要检查并修改它们。

如何操作?

  1. 找到后台模板文件:

    • 通过FTP或文件管理器,进入 /dede/templets/ 目录,这个目录存放了后台所有页面的模板文件。
  2. 检查并修改编码:

    • 你需要检查的是你正在使用的模板文件,如果你发现后台发布文章的页面有乱码,就应该检查 article_add.htm 文件。
    • 使用专业的代码编辑器(如 VS Code、Sublime Text、Notepad++)打开这些 .htm 文件。
    • 检查编码: 在编辑器的右下角,通常会显示当前文件的编码格式。
      • 必须是 UTF-8,如果不是,请将其转换为 UTF-8
      • 特别注意:不能是 UTF-8 with BOM,BOM(Byte Order Mark)是一种特殊的标记,在某些环境下(尤其是PHP输出时)会导致页面头部出现空格或乱码,"�" 这样的字符。强烈建议使用不带BOM的UTF-8编码。
    • 保存文件: 将文件以 UTF-8 编码(无BOM)重新保存。

需要重点检查的文件:

  • index_body.htm (后台首页)
  • catalog_add.htm (添加栏目)
  • article_add.htm (添加文章)
  • article_edit.htm (编辑文章)
  • sys_data_replace.php (数据库替换)
  • 以及任何你发现出现乱码的后台页面对应的模板文件。

第四步:数据修复(如果从GBK转换而来)

如果你之前是GBK编码的网站,后来转换成了UTF-8,但数据库中的数据仍然是GBK编码,那么就会出现“前台UTF-8,后台GBK”的乱码情况,这时需要修复数据库。

警告: 操作数据库有风险,请务必备份数据库!

  1. 登录phpMyAdmin,选择你的网站数据库。

  2. 点击顶部菜单的 【导入】【操作】 -> 【更改字符集和整理】

  3. 方法一(推荐):使用SQL语句执行

    • 在phpMyAdmin的SQL查询框中,执行以下命令(请将 your_prefix_ 替换成你的数据库表前缀):
      -- 将所有表的字符集转换为utf8mb4
      ALTER TABLE `your_prefix_arctype` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
      ALTER TABLE `your_prefix_archives` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
      ALTER TABLE `your_prefix_addonarticle` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
      -- ... 对你所有的数据表都执行一遍 ...
    • 这是一个通用模板,你需要将 your_prefix_arctype, your_prefix_archives 等替换成你数据库中所有的表名。
  4. 使用phpMyAdmin的批量转换功能

    • 在数据库列表页面,勾选所有表。
    • 在底部的“对于选中的表:”下拉菜单中,选择 “更改字符集和整理”
    • 在右侧的“字符集”下拉菜单中选择 utf8mb4
    • 点击 “执行”

执行完毕后,你的数据库数据就完全是UTF-8编码了,后台乱码问题应该就能解决。

总结与排查思路

如果后台仍然出现乱码,请按以下思路排查:

  1. 确认“三统一”: 程序、数据库、网页文件是否都是UTF-8?
  2. 检查后台设置: 系统基本参数 -> 核心设置 -> 网站编码 是否为 UTF-8GBK转UTF-8开启 是否为
  3. 检查文件编码: 使用专业编辑器打开 /dede/templets/ 下的乱码页面模板,确认文件编码是 UTF-8 (无BOM)
  4. 检查数据库数据: 进入phpMyAdmin,随便打开一个数据表(如 dede_archives),查看里面的文章标题,如果显示为乱码,说明数据库数据本身不是UTF-8,需要按第四步修复。
  5. 浏览器缓存: 清理浏览器缓存或使用无痕模式访问后台,排除浏览器缓存干扰。

按照以上步骤仔细检查和设置,你的织梦DedeCMS后台就能稳定地使用UTF-8编码了。