织梦安装如何设置数据库编码

一、数据库编码的重要性

织梦CMS在安装时必须正确设置数据库编码,编码选择错误会导致前后台乱码、特殊字符丢失、搜索失效等严重问题。编码设置需在三个层面保持一致:数据库、数据表、程序配置文件。

二、织梦支持的编码类型

编码对应程序版本字符集适用场景
utf8UTF-8版utf8_general_ci常规中文+英文站
utf8mb4UTF-8版utf8mb4_general_ci需存储emoji等4字节字符
gbkGBK版gbk_chinese_ci老站延续

三、安装向导中的编码设置

织梦安装向导第二步"数据库设定"中有"数据库编码"选项,自动根据程序版本提供。务必与下载的程序版本一致:

切勿手动改成不一致的值,否则安装完成后会出现乱码。

四、建库SQL示例

1. UTF-8数据库

CREATE DATABASE dedecms DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

2. utf8mb4数据库(推荐)

CREATE DATABASE dedecms DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

3. GBK数据库

CREATE DATABASE dedecms DEFAULT CHARACTER SET gbk COLLATE gbk_chinese_ci;

五、宝塔建库编码选择

  1. 宝塔 - 数据库 - 添加数据库。
  2. 数据库名填写 dedecms。
  3. 用户名自动生成或自定义。
  4. 访问权限选"本地"。
  5. 字符集选择 utf8mb4(推荐)或 utf8。
  6. 点击提交创建。

六、配置文件修改

安装完成后,数据库编码记录在 /data/common.inc.php

<?php
$cfg_dbhost='127.0.0.1';
$cfg_dbname='dedecms';
$cfg_dbuser='dedeuser';
$cfg_dbpwd='Abc123!@';
$cfg_dbprefix='dede_';
$cfg_db_language='utf8';  // 此处决定连接时使用的编码
?>

若需从 utf8 切换为 utf8mb4,直接修改 $cfg_db_language='utf8mb4';,并确保数据库与表的字符集也为 utf8mb4。

七、已建库编码转换

若数据库已建为 utf8,想转为 utf8mb4:

-- 修改库
ALTER DATABASE dedecms CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

-- 修改所有表(生成批量语句)
SELECT CONCAT('ALTER TABLE ', table_name, ' CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;')
FROM information_schema.tables
WHERE table_schema='dedecms';

-- 修改完成后修改 common.inc.php 中 $cfg_db_language

八、乱码排查清单

九、注意事项

utf8mb4 比 utf8 多支持4字节字符(如emoji、生僻字),但索引长度限制更严格,旧版MySQL(5.5.3以下)不支持;从utf8升级utf8mb4前务必全库备份。

十、行动指引

新建站点一律使用 UTF-8版程序 + utf8mb4 数据库,从源头杜绝编码问题;已运行的utf8站点若需支持emoji,可参考第七节做平滑升级;无论何时修改编码,请先在测试环境验证搜索、采集、生成三大功能后再上线。