技术日志

记录分享邓杰律师从事网络技术工作点点滴滴。

位置:首页>资讯动态>技术日志

如何将phpcms V9.6.3的GBK版本转换为UTF-8 版本?

点击复制标题网址

——温馨提示——

已复制到剪贴板,可粘贴到下一处。


时间:2026-01-14   访问量:1013

编者按:在宝塔面板(v11.4.0) + CentOS 7.6 +MySQL 5.7.43+PHP 5.6.40环境下,将 Phpcms V9.6.3网站程序和对应的MySQL 数据库从 GBK编码 转为 UTF-8 编码。具体方法和实现步骤如下。

如何将 Phpcms V9.6.3的GBK版本转换为UTF-8 版本?

(操作之前再三提醒您,务必做好网站数据备份)

 在宝塔面板(v11.4.0) + CentOS 7.6 +MySQL 5.7.43+PHP 5.6.40环境下,将 Phpcms V9.6.3网站程序和对应的MySQL 数据库从 GBK编码 转为 UTF-8 编码。具体方法和实现步骤如下。

第一部分:将Phpcms V9.6.3网站程序由gbk转换为UTF-8。

可使用比如Notepad++等工具进行转换。建议安装BatchConvertGBKtoUTF8进行批量转换节约时间,这步比较简单,本处不再赘述。

第二部分:将Phpcms V9.6.3网站数据库由gbk转换为UTF-8。

步骤1:执行导出命令(将 GBK 数据库完整导出为.sql 文件,保留原编码格式,避免导出时乱码):

mysqldump -u root -p --default-character-set=gbk --databases nideshujukumingcheng --add-drop-database --add-drop-table > /www/backup/nideshujukumingcheng_gbk_backup.sql

步骤 2:将 GBK 编码的.sql 备份文件转码为 UTF-8 编码

# 转码命令:将GBK格式的sql文件转为UTF-8格式,生成新文件

iconv -f GBK -t UTF-8 /www/backup/nideshujukumingcheng_gbk_backup.sql > /www/backup/nideshujukumingcheng_utf8_backup.sql

步骤 3:修改 UTF-8 格式.sql 文件中的数据库编码配置

用notepad++

关键修改点(全局搜索对应内容,替换为 UTF-8 相关配置):

• 修改 1:数据库创建语句中的编码

找到:CREATE DATABASE /*!32312 IF NOT EXISTS*/ nideshujukumingcheng /*!40100 DEFAULT CHARACTER SET gbk */;

替换为:CREATE DATABASE /*!32312 IF NOT EXISTS*/ nideshujukumingcheng /*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci */;

(注:MySQL 5.7 推荐使用utf8_general_ci排序规则,兼容 Phpcms V9.6.3)

• 修改 2:数据表连接 / 创建时的编码

找到文件顶部的SET NAMES gbk;(若有多处,全部替换)

替换为:SET NAMES utf8;

批量替换两处核心内容(全局搜索替换,而非仅修改数据库创建语句):

• 替换 1:数据表创建语句中的编码

查找全局所有:DEFAULT CHARACTER SET gbk(包含数据表的默认编码配置)

替换为:DEFAULT CHARACTER SET utf8

• 替换 2:数据表排序规则(可选,确保兼容)

查找全局所有:gbk_chinese_ci

替换为:utf8_general_ci

• 补充:若存在CHARSET=gbk(简写形式),也需替换为CHARSET=utf8

步骤 4:删除原 GBK 数据库,重建 UTF-8 编码的空数据库(可选,也可直接导入覆盖)

步骤 5:将 UTF-8 格式.sql 文件导入,重建 UTF-8 编码数据库

将修改后的 UTF-8 编码.sql 文件导入 MySQL,完成数据库重建,命令如下:

bash

运行

# 核心导入命令:指定连接编码为utf8,导入转码并修改后的sql文件

mysql -u root -p --default-character-set=utf8 < /www/backup/nideshujukumingcheng_utf8_backup.sql

步骤 6:修改 Phpcms 网站配置文件(匹配 UTF-8 编码)

数据库编码已改为 UTF-8,需同步修改 Phpcms 的数据库连接配置,避免网站访问乱码,步骤如下:

1. 宝塔面板「文件」模块,导航到 Phpcms 网站根目录(通常在/www/wwwroot/[你的域名]/)。

2. 找到配置文件config/database.php和system.php。

找到:'charset' => 'gbk',

替换为:'charset' => 'utf8',

3. 保存文件,完成配置修改。

步骤7:

查漏补缺调整解决字符等问题

以前是gbk,现在是utf8,由于两者字符不一样,转换后与字符数相关的逻辑要做相应调整。比如。您要到后台模型管理-文章模型-字段管理中,调整与字符长度相关的值以适配你的网站,此外,你还需解决截取标题或者文章内容产生问号?

替换 PHPCMS 的 str_cut 函数(彻底解决)

编辑 /phpcms/libs/functions/global.func.php,找到 str_cut 函数,替换为 UTF-8 安全版本:

替换为以下代码:

/**

 * 字符截取 支持UTF8/GBK

 * @param $string

 * @param $length

 * @param $dot

 */

function str_cut($str, $length, $suffix = '...') {

    if (strlen($str) <= $length) return $str;

    

    // 强制按 UTF-8 处理

    $str = iconv('UTF-8', 'UTF-8//IGNORE', $str);

    $tmp_str = mb_substr($str, 0, $length, 'UTF-8');

    

    // 如果截断后长度不足(说明原字符串含多字节),再加 suffix

    if (mb_strlen($str, 'UTF-8') > $length) {

        $tmp_str .= $suffix;

    }

    

    return $tmp_str;

}

以上是邓杰律师实战转换分享,如仍有不清楚的可加微信沟通。

发表评论:

评论记录:

未查询到任何数据!

下一篇:没有了!

法律咨询
————受人之托,忠人之事————
深圳数据合规律师
邓杰律师

专业

专注执业领域事务

尽责

全力办理委托事项

务实

扎实维护合法权益

邓杰系深耕于数据合规领域复合型资深专业律师,其律师执业证号为14403201810022100。邓杰律师现(曾)任WEB前端开发工程师、WEB服务器维护工程师、计算机信息网络安全员、深圳市人民政府听证员、深圳市政府采购评审专家(法律类)、深圳市某区政府系统公职律师,在网络领域和政府系统从业多年,深刻理解网络前沿技术和行政程序运行规则,十分擅长互联网+平台领域数据合规法律实务,可为政府、企业和个人在数据合规领域提供富有针对性的非诉、诉讼、仲裁、执行等法律风险防控解决方案,能有效维护当事人的各类合法权益。

扫一扫,存名片

深圳数据合规律师名片

律师名片

QQ扫一扫

深圳数据合规律师qq

QQ咨询

电话咨询

邓杰律师电话:13715198118

请输入您的联系电话,座机请加区号

电话咨询

微信扫一扫

深圳数据合规律师微信

微信联系