桐木舟学英语人工智能

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 167|回复: 0

OpenCart 重装后把数据库编码从 utf8 改成 utf8mb4 全过程指南

[复制链接]

351

主题

100

回帖

2231

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
2231
发表于 2025-7-4 13:43:59 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
OpenCart 重装后把数据库编码从 utf8 改成 utf8mb4 全过程指南
这份文档适用于 OpenCart 3.x 版本使用 MySQL 5.7 或高版本数据库的环境,目标是确保支持 Emoji 和其他 4 字节 Unicode 字符,采用 utf8mb4 编码。



一、初始化数据库时,选择 utf8mb4
在新建 OpenCart 系统时,创建数据库时:
  • 精确选择编码为 utf8mb4_general_ci
  • 如果是用 phpMyAdmin,在创建数据库时输入:
数据库名称: dataname007
编码: utf8mb4_general_ci


二、检查补教数据库表的字符集
使用 phpMyAdmin 或线上执行:
SELECT TABLE_NAME, CCSA.character_set_name AS charset
FROM information_schema.`TABLES` T,     
           information_schema.`COLLATION_CHARACTER_SET_APPLICABILITY` CCSA
WHERE CCSA.collation_name = T.table_collation  
AND T.table_schema = 'dataname007';
查看是否都是 utf8mb4 系列



三、修改表和列为 utf8mb4
假设表为 oc_category_description,如果列是 utf8,需要执行:
ALTER TABLE oc_category_description CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
如果需要修改有索引的 varchar 类型,可选择将 255 改为 191:
ALTER TABLE oc_category_description
MODIFY name VARCHAR(191) NOT NULL,
MODIFY header VARCHAR(191) NOT NULL,
MODIFY meta_title VARCHAR(191) NOT NULL,
MODIFY meta_description VARCHAR(191) NOT NULL,
MODIFY meta_keyword VARCHAR(191) NOT NULL;


四、确保 MySQL 配置支持 utf8mb4
打开 /etc/my.cnf或 /etc/mysql/my.cnf,确保有:
[client]
default-character-set = utf8mb4

[mysql]
default-character-set = utf8mb4
[mysqld]character-set-server = utf8mb4
collation-server = utf8mb4_general_ci
重启 MySQL 生效:
sudo systemctl restart mysql


五、修改 PHP 数据库连接编码
打开:system/library/db/mysqli.php
找到:
$this->connection->set_charset('utf8');
改为:
$this->connection->set_charset('utf8mb4');
确保 OpenCart 和 MySQL 连接时使用 utf8mb4



六、Twig 模板文本输出使用 |raw
修改:
{{ description }}
成:
{{ description|raw }}
确保能正确输出 Emoji 和 HTML 标签



结论
一旦数据库、PHP 连接、模板输出均为 utf8mb4,则可以完美支持 Emoji 和特殊符号显示。





回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|桐木舟论坛

GMT+8, 2025-7-12 00:38 , Processed in 0.055840 second(s), 21 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表