一、两个版本的核心区别
织梦官方同时提供GBK与UTF-8两种编码版本,区别在于字符存储方式不同。GBK每个汉字占2字节,UTF-8每个汉字占3字节。这会直接影响数据库体积、模板编辑、跨语言扩展等多个方面。
二、对比一览
| 对比项 | GBK版 | UTF-8版 |
|---|---|---|
| 中文存储字节 | 2字节 | 3字节 |
| 数据库体积 | 较小 | 较大 |
| 多语言支持 | 仅简繁中文 | 支持全球语言 |
| 模板编辑 | 需保存为GBK编码 | 通用UTF-8,主流编辑器默认 |
| 第三方对接 | 容易出现乱码 | 对接API、采集更顺畅 |
| 未来发展 | 已逐步淘汰 | 主流趋势 |
三、选择建议
1. 优先选择UTF-8的场景
- 新搭建的站点,无历史包袱。
- 未来可能支持多语言(英文、日文、繁体)。
- 需要与小程序、APP、API对接。
- 使用现代编辑器(VSCode、Sublime等)开发模板。
2. 仍可考虑GBK的场景
- 老站延续运营,模板与数据库均为GBK,迁移成本高。
- 对数据库体积极度敏感的虚拟主机环境。
- 内部系统,纯中文展示,无对接需求。
四、数据库编码配置
安装时数据库编码必须与程序版本一致,否则前后台会出现乱码。
// UTF-8版本 data/common.inc.php
$cfg_db_language='utf8';
// GBK版本
$cfg_db_language='gbk';
// MySQL建库时也应保持一致
CREATE DATABASE dedecms DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
五、GBK与UTF-8互转方法
- 导出.sql文件,用EditPlus或Notepad++打开。
- 将文件编码转换为UTF-8(注意文件头 charset 也要改)。
- 替换所有
gbk字符串为utf8。 - 新建UTF-8数据库导入。
- 模板文件单独转码(注意备份原模板)。
- 修改
common.inc.php中的$cfg_db_language。
六、常见乱码排查
- 页面乱码:检查
<meta charset>与程序版本是否一致。 - 数据库乱码:检查库、表、字段三层字符集是否统一。
- 采集乱码:采集规则中设置目标页面编码与正则匹配。
- 导出Excel乱码:UTF-8导出CSV需加BOM头
\xEF\xBB\xBF。
七、注意事项
新建数据库时建议使用
utf8mb4 而非 utf8,以支持emoji等4字节字符;织梦配置文件中可写 utf8mb4,但需 MySQL 5.5.3+ 支持。
八、行动指引
新项目一律推荐UTF-8版本,与生态接轨更顺畅;老GBK站点若计划扩展多端或对接,建议安排一次完整迁移测试,验证采集、生成、搜索三大功能后再切换生产环境。