在织梦GBK版中,如果在PHP 5.4下系统基本参数设置不能保存中文以及在编辑器下中文不显示的问题,通常是由于编码问题引起的,PHP 5.4以后,htmlspecialchars
函数的默认编码参数改为了UTF8,这导致使用GBK编码的中文站无法正常处理中文字符。
以下是解决这一问题的步骤:
修改方法
1、修改系统基本参数文件
打开dede/templets/sys_info.htm
文件。
搜索并替换所有htmlspecialchars($row['value'])
为htmlspecialchars($row['value'], ENT_COMPAT, 'GB2312')
。
如果发现还有其他页面也有类似问题,最好在Dreamweaver等编辑器下整站搜索htmlspecialchars($row['value'])
,然后批量替换成htmlspecialchars($row['value'], ENT_COMPAT, 'GB2312')
。
2、修改编辑器文件
打开include/ckeditor/ckeditor_php5.php
文件。
找到代码 `$out = “” . htmlspecialchars($value) . “
”;`。
将其改成 `$out = “” . htmlspecialchars( $value, ENT_COMPAT, ‘GB2312’ ) . “
”;`。
3、修改文章添加和编辑文件
打开dede/article_add.php
和dede/article_edit.php
文件。
将$title = htmlspecialchars(cn_substrR($title, $cfg_title_maxlen));
改成$title = htmlspecialchars(cn_substrR($title, $cfg_title_maxlen), ENT_COMPAT, 'GB2312');
。
4、修改标签管理文件
打开/dede/templets/tags_main.htm
文件。
找到$fields['tag'] = htmlspecialchars($fields['tag']);
。
替换为$fields['tag'] = htmlspecialchars($fields['tag'], ENT_COMPAT, 'GB2312');
。
表格示例
文件路径 | 原始代码 | 修改后代码 |
dede/templets/sys_info.htm | htmlspecialchars($row['value']) | htmlspecialchars($row['value'], ENT_COMPAT, 'GB2312') |
include/ckeditor/ckeditor_php5.php | `$out = “” . htmlspecialchars($value) . “ |
”; |
$out = “” . htmlspecialchars( $value, ENT_COMPAT, ‘GB2312’ ) . “
”;` |
|dede/article_add.php
|$title = htmlspecialchars(cn_substrR($title, $cfg_title_maxlen));
|$title = htmlspecialchars(cn_substrR($title, $cfg_title_maxlen), ENT_COMPAT, 'GB2312');
|
|dede/article_edit.php
|$title = htmlspecialchars(cn_substrR($title, $cfg_title_maxlen));
|$title = htmlspecialchars(cn_substrR($title, $cfg_title_maxlen), ENT_COMPAT, 'GB2312');
|
|/dede/templets/tags_main.htm
|$fields['tag'] = htmlspecialchars($fields['tag']);
|$fields['tag'] = htmlspecialchars($fields['tag'], ENT_COMPAT, 'GB2312');
|
常见问题解答(FAQs)
Q1: 为什么在PHP 5.4及更高版本中需要特别处理htmlspecialchars函数?
A1: PHP 5.4之后,htmlspecialchars
函数的默认编码参数被改为了UTF8,而之前的版本默认是与当前页面的字符编码一致,在使用GBK编码的网页中,如果不显式指定编码,就会导致中文字符无法正确处理。
Q2: 这些修改是否会影响到其他功能的正常使用?
A2: 这些修改主要针对字符编码的处理,不会影响其他功能,只要确保所有涉及字符编码的地方都进行了相应修改,就能保证系统的正常运行。
通过以上步骤,可以有效解决织梦GBK版在PHP 5.4环境下系统基本参数设置不能保存中文以及编辑器下中文不显示的问题。
问题 | 原因 | 解决方法 |
系统基本参数设置不能保存中文 | PHP 5.4 默认字符集编码为 ISO88591,不支持中文字符存储 | 1. 在 PHP 配置文件(如 php.ini)中设置default_charset = "UTF8" 。2. 确保数据库编码为 UTF8,如 MySQL 中的 utf8 或utf8mb4 。 |
编辑器下中文不显示 | 编辑器可能没有正确设置字符集编码 | 1. 确保编辑器支持 UTF8 编码,并在设置中启用 UTF8 编码。 2. 如果使用 HTML 编辑器,检查 HTML 文档的编码是否设置为 UTF8。 |
文件编码问题 | 文件可能使用了错误的编码格式 | 1. 使用文本编辑器打开文件,检查文件编码是否为 UTF8。 2. 如果不是 UTF8 编码,使用支持 UTF8 编码的文本编辑器打开文件,并将编码转换为 UTF8。 |
服务器配置问题 | 服务器可能没有正确配置字符集编码 | 1. 检查服务器配置文件(如 httpd.conf)中字符集编码设置。 2. 确保 Web 服务器(如 Apache 或 Nginx)支持 UTF8 编码。 |
最新评论
本站CDN与莫名CDN同款、亚太CDN、速度还不错,值得推荐。
感谢推荐我们公司产品、有什么活动会第一时间公布!
我在用这类站群服务器、还可以. 用很多年了。