在搭建和测试Dedecms过程中,如果使用的是Dedecms CMS与Sphinx中文版-Coreseek 4.0版的组合,可能会遇到一些编码相关的问题。以下内容将详细说明如何解决这些问题,并确保系统能够正常运行。

首先,在命令行中测试中文查询功能时,可以使用以下命令:


echo 网络搜索 | iconv -f gbk -t utf-8 | search -c D:\\\\webserver\\\\coreseek-4.0.1-win32\\\\etc\\\\csft_dedecmsv57.conf --stdin | iconv -f utf-8 -t gbk

通过上述命令,可以成功查询到相关内容。然而,在实际操作中,当尝试在DedeCms前端进行查询时,却可能发现无法获取任何结果。这是为什么呢?

经过深入研究,我们发现原因在于DedeCMS GBK版的search.php文件中,关键词编辑默认采用的是GBK编码格式,而Sphinx全文索引则要求输入为utf-8编码。因此,当用户输入GBK编码的中文字符时,系统无法正确处理这些字符,导致查询失败。

为了解决这一问题,可以按照以下步骤对代码进行修改:

打开plus目录下的search.php文件,找到以下代码行:


$keyword = addslashes(cn_substr($keyword,30));

在这段代码之后,添加以下内容:


$keyword = mb_convert_encoding($keyword,"UTF-8", "GBK");

完成以上修改后,保存文件并重新测试查询功能。此时,系统应能够正确识别GBK编码的中文字符,并将其转换为utf-8格式以供Sphinx索引使用。

总结来说,通过对DedeCms的search.php文件进行简单的编码转换处理,可以有效解决因编码不一致而导致的查询问题。这不仅提升了用户体验,也确保了系统的稳定性和可靠性。

注意:在实际应用中,请根据您的服务器环境和具体路径调整相关配置。