我们目前碰到了两个问题:
一、每个搜索引擎的查询关键字值表示的方式不一样:
google  q=%D4%DA%CF%DF%BF%CD%B7%FE
baidu   wd=%D4%DA%CF%DF%BF%CD%B7%FE
yahoo   p=%D4%DA%CF%DF%BF%CD%B7%FE
要获取关键内容只能先通过字段判断是哪个搜索引擎然后采用不同的方式截取;二、搜索引擎的关键字的编码方式跟浏览器的采用的编码方式有关,象我上面写的字符串可以用gb2312进行反编码。要是原来用的是utf8  进行encode话就会出现乱码。
我想到的办法是事先获取对方浏览的编码方式,但request.getCharacterEncoding()对于从HTML页面提交的请求无法获取编码方式。不知道各位大侠有没有好的办法,指点小弟一下。

解决方案 »

  1.   

    我觉得他们都是用URLEncoding处理的
      

  2.   

    第一个问题找到解决办法了:
    下面的正则表达式:
    "(?:yahoo.+?[\?|&]p=|openfind.+?q=|google.+?q=|lycos.+?query=|aol.+?query=|onseek.+?keyword=|search\.tom.+?word=|search\.qq\.com.+?word=|zhongsou\.com.+?word=|search\.msn\.com.+?q=|yisou\.com.+?p=|sina.+?word=|sina.+?query=|sina.+?_searchkey=|sohu.+?word=|sohu.+?key_word=|sohu.+?query=|sogou.+?query=|163.+?q=|baidu.+?w=|baidu.+?wd=|baidu.+?word=|3721\.com.+?name=|3721\.com.+?p=|Alltheweb.+?q=)([^&]*)"
      

  3.   

    上面那个是ASP版本的,下面是JAVA版本:
    (http://\\S*google\\S*q=|http://\\S*baidu\\S*q=|http://\\S*yahoo\\S*p=|http://\\S*zhongsou\\S*word=|http://\\S*lycos\\S*query=|http://\\S*tom\\S*word=|http://\\S*qq\\S*word=|word=|http://\\S*msn\\S*q=|http://\\S*sina\\S*k=|http://\\S*sohu\\S*key_word=|http://\\S*sohu\\S*query=|http://\\S*sogou\\S*query=|http://\\S*163\\S*q=|http://\\S*3721\\S*name=|http://\\S*3721\\S*p=|http://\\S*soso\\S*w=)([^&]+)\\S*
      

  4.   

    反编码我发现一个规律,google都是采用utf8,而国内另外一些搜索引擎都是采用gb2312的,不知道到了台湾香港会不会是BIG5。
      

  5.   

    刚才那个有点问题这个经过测试了:
    (http://\\S*google\\S*q=|http://\\S*baidu\\S*wd=|http://\\S*yahoo\\S*p=|http://\\S*zhongsou\\S*word=|http://\\S*lycos\\S*query=|http://\\S*tom\\S*word=|http://\\S*qq\\S*word=|word=|http://\\S*msn\\S*q=|http://\\S*iask\\S*k=|http://\\S*sohu\\S*key_word=|http://\\S*sohu\\S*query=|http://\\S*sogou\\S*query=|http://\\S*163\\S*q=|http://\\S*3721\\S*name=|http://\\S*3721\\S*p=|http://\\S*soso\\S*w=)([^&]+)\\S*大家有没有好的建议??帮帮小弟了