【问题标题】:PHP search engine problemPHP搜索引擎问题
【发布时间】:2011-03-25 04:18:20
【问题描述】:

我使用 Sphider 作为我网站的搜索引擎,它非常易于使用,但我在本地化字符方面遇到了一些重大问题。

我所有的 html/php 页面都将字符集定义为 UTF-8,当我第一次使用 Sphider“蜘蛛”抓取它创建的网站时,Sphider 的搜索和结果页面都有 charset=ISO-8859-1我所有的本地化字符都变成了一些我不知道的编码:

“ç”变成“ç”等等与“ã”,“á”等

当我在 MySql 中创建数据库时,我将其设为 utf-8_general_ci,我对数据库的定义是: MySQL 字符集:UTF-8 Unicode (utf8) MySQL 连接排序规则:utf-8_unicode_ci

这是一个真正的问题,因为搜索无法正常工作,例如,如果我搜索“diferença”,它会在 url 中显示为“?query=diferença&search=1”,这是正确的,但不会在“建议搜索”它会显示为“diferen�a”,以防它不可见,“ç”变成了一个黑色方块,上面有一个白色问号。

我相信蜘蛛可能有不同的工作字符集,但如果是这样的话,我似乎无法理解。也主要向英语发展,我相信不难理解它在此过程中遇到了一些问题。

有没有人有这方面的经验或者我应该怎么做才能解决这个问题?

真正困扰我的是不明白为什么我会在数据库中得到奇怪的符号。

【问题讨论】:

    标签: php mysql character-encoding search-engine


    【解决方案1】:

    快速浏览一些 Sphider 源代码文件发现该应用程序仅适用于 Latin1 字符集。您应该切换到其他搜索引擎,例如Lucene。不过,您需要做更多与搜索相关的编码。如果您不想这样做,并且您的网站是公开的,那么只需集成 Google 搜索即可。

    【讨论】:

    • 谢谢你,我暂时保留它,我不想使用谷歌,因为我无法控制蜘蛛搜索或结果布局以集成到我的网站中。我最初看的是 Lucene,但它在我头上。
    • 如果可以,您可以使用输出缓冲来捕获您正在生成的整个页面,然后如果蜘蛛请求它,则使用 iconv 将其转换为 ISO-8859-1//IGNORE。
    【解决方案2】:

    你应该拥有 utf-8 中的所有内容。

    • 编辑任何给定页面的表单
    • 物理文件
    • 输出的html文件
    • 标题
    • 与数据库的连接
    • 表定义

    错过一个,你会遇到问题(我说的是个人经验)

    【讨论】:

    • 我相信我只做 Sphider 应用程序,不能使用 utf-8 并且我无法适应它。
    【解决方案3】:
    1. 将相应模板目录中文件“header.html”的第4行修改为<meta http-equiv="content-type" content="text/html; charset=UTF-8">
    2. 将“languages”目录中相应的php文件转换为UTF8。

    如果以上还不够,也请按照 The Disintegrator 的回答。

    【讨论】:

      猜你喜欢
      • 2010-11-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-13
      • 1970-01-01
      • 1970-01-01
      • 2013-09-03
      • 1970-01-01
      相关资源
      最近更新 更多