科汛KesionCMS:IE6下UTF版本奇数个搜索关键词传递错误的解决方法
用了一段时间的科汛KesionCMS,发现不少问题,从上一版本到目前最新版本,都存在下面一个搜索方面的问题,对于搜索页面 http://localhost/plus/search/,如果你使用的是UTF-8版本,针对IE6,就会出现搜索关键词传递错误的问题!问题及示范如下:
输入一个汉字来搜索,比如“人”,然后点搜索,会出现正常的搜索结果,但这时再点“文章”频道,即切换搜索频道,出来的搜索却是如下:

如图上圆圈所示,传递的关键词“人”,会被相应的修改为频道ID!同样的,点击“商品”频道搜索,会出来传递关键词为 “m=5”!
结论:输入搜索关键字为一个汉字时,会出现传递key错误!当然,你只要输入奇数个关键词,都会出现此情况!
IE6下面不行,我的猜测是关键字转码出问题了!
解决办法
为什么只有奇数个关键字才会出现这种问题呢?突然想到,以前仿搜索系统时,http://www.nuodou.com/s/
出现不同编码的搜索引擎间传递关键字的编码问题,解决方法类似。也就是UTF-8中用3个字节表示一个汉字,而普通的GB2312或BIG5是两个,并且上述问题中为何只有IE才会出现问题呢,原因是IE把UTF-8当作两个字节解析时出现半个汉字的情况,导致IE无法正常完整的传递关键字,因此最简单的解决办法是:
1、在网页文件的<head></head>标签中一定要把字符定义
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
放在<title></title>之前。
2、修改 Plus\search\index.asp 文件
找到 Sub SearchMenu() 函数,将其中的红色部分
<a href=""?stype="&stype&"&key="&key&
替换为
<a href=""?stype="&stype&"&key="&server.URLEncode(key)&
原因是在utf-8中通过URL参数传递汉字,特别是奇数个汉字时,需要加上server.URLEncode()
最后,如果你用的是非IE6浏览器,或者GBK版本,就不会出现这些问题,各取所需吧!

2011/11/20 22:33:08
好喜欢啊 嘻嘻
2011/09/20 12:39:47
我用的是IE8
2011/09/20 10:16:22
好爱思考啊!
2011/03/12 17:16:21
这个不太懂呢
2010/11/21 18:02:15
没具体尝试过,还理解不来,得遇到了试一下就知道了。
2010/09/10 13:07:48
现在IE9都快出来了!
2010/08/23 22:25:58
科讯。。。我用过一回,还是08年的时候,就放弃了。BUG太多 论坛没人帮忙 也找不到解决的方法
2010/08/23 17:53:21
遵照便准请使用utf8编码
2010/08/21 15:52:54
这点还真的不知道