一直想寻找一个站内搜索的程序,google和百度都开发了站内搜索功能,但是google的速度很慢,而百度的收录不全,搜索不到内容,找来找去发现一个叫Sphider开源PHP搜索引擎网络爬虫还不错,不过却在语言选择方面出现了问题,好像这个网络爬虫不支持中文,建立索引的时候保存到数据库都是乱码,不过修改网页编码为UTF-8却可以显示为正常,虽然这样也能解决问题,但是乱码始终不好吧。

Sphider是英文版的,索引纯英文网站没有问题,但是索引中文的网页就会出现乱码,查看其网页的编码居然是ISO-8859-1,看来作者根本就没有考虑到多语言的问题。

接下来我就给大家介绍一下如何解决Sphider中文乱码的问题,其实只需要修改三个地方就能解决问题。

1.php.ini PHP配置文件

在php.ini文件里面,配置程序默认的编码将缺省的字符集编码设置为”UTF-8″。

default_charset = "UTF-8"

2.mysql连接设置

使用set names 语句设置读取和查询数据的编码为”UTF-8″,修改的位置在settings/database.php文件,在$success = mysql_select_db ($database);的后面添加下面的代码。

mysql_query("set names 'utf8'");

3.修改spider.php中$file的编码方式

spider在读取网页的时候强制转换为”UTF-8″编码,我们可以使用mb_convert_encoding函数,修改位置在admin/spider.php文件大概第190行,在$file = file_get_contents($url);的后面添加下面的代码。

$file=mb_convert_encoding($file,"UTF-8","gbk,gb2312,UTF-8");

通过上面的修改,索引的网页数据保存到数据就是正常的编码,不过还得修改前台显示的模版文件编码为UTF-8,这样前台的搜索结果才不是乱码。