日期:2014-05-17  浏览次数:20787 次

编码问题,请孟子等牛人来解决,已查过许多方法不能解决!
我们头让我用asp搞一个综合搜索的功能。
一个文本框   下面可以选择用哪个搜索(可多个,引型是从后台添加的)进行搜索。
比如我后台添加了   baidu   和   google   文本框下就有2个   多选框,如果我都勾选。点搜索以后   在文本框下面显示   搜索结果(   不是采集结果,是要引型的整个页面),结果上面还有2个(因为就选了2个引型)     按钮,比如现在结果显示的是   baidu的结果   我点   google按钮时     结果就要变成google的结果。  
结果是通过一个   iframe   来调的。
我搜索数字英文都可以   但搜索中文时会出现乱码。我页面设置是gb2312   ,但搜索引型   有的编码是   utf-8   有的是   gb2312   我把页面改成utf-8   也不能全部正确显示。

不知道这个问题如何解决。如果不用iframe   解决也行   我可以改。主要是这个功能不能有乱码。

另后台可以添加NN多引型   中搜。sogou。MSN。   yahoo.   soso.......多个。


------解决方案--------------------
注意escape函数
js,vbs,C#客户端服务器端通吃.
------解决方案--------------------
http://www.ic36.com/search/supersearch.asp?keyword=%D6%D0%CE%C4&Submit=++%CB%D1%CB%F7++&idnum=IC%D6%AE%BC%D2&idnum=IC%BD%BB%D2%D7%CD%F8&idnum=%BB%AA%C7%BF%B5%E7%D7%D3%CA%C0%BD%E7%CD%F8&idnum=21IC&idnum=%CA%A2%C3%F7%C1%E3%BC%FE%CD%F8&idnum=114IC&idnum=%BF%E2%B4%E6%D4%DA%CF%DF&idnum=%B0%D9%B6%C8&idnum=Google&idnum=Brokerforum#

我以前做的,跟你说的一模一样的东西,没发现你说的问题...
------解决方案--------------------
Public Function isdigit(ByVal iValue)
isdigit = CBool(iValue > = 48 And iValue <= 57)
End Function

Public Function isalpha(ByVal iValue)
isalpha = CBool((iValue > = 65 And iValue <= 90) Or (iValue > = 97 And iValue <= 122))
End Function

Public Function isalnum(ByVal iValue)
isalnum = CBool(isdigit(iValue) Or isalpha(iValue))
End Function

Private Function MyHex(ByVal iValue)
Dim ret
ret = Hex(iValue)
MyHex = String(Len(ret) Mod 2, "0 ") & ret
End Function

Public Function URLEncode8(ByVal strIn)
Dim ret
Dim i
Dim u
Dim b(2)
For i = 1 To Len(strIn)
u = AscW(Mid(strIn, i, 1)) And &HFFFF&
If u < 128 Then
If isalnum(u) Then
ret = ret & Chr(u)
Else
ret = ret & "% " & MyHex(u)
End If
ElseIf u < 2048 Then
b(1) = &H80 Xor (u And &H3F)
u = u \ (2 ^ 6)
b(0) = &HC0 Xor (u And &H1F)
ret = ret & "% " & MyHex(b(0)) & "% " & MyHex(b(1))
Else
b(2) = &H80 Xor (u And &H3F)
u = u \ (2 ^ 6)
b(1) = &H80 Xor (u And &H3F)
u = u \ (2 ^ 6)
b(0) = &HE0 Xor (u And &HF)
ret = ret & "% " & MyHex(b(0)) & "% " & MyHex(b(1)) & "% " & MyHex(b(2))
End If
Next
URLEncode8 = ret
End Function

UTF-8编码的就用这个加密
<iframe src= " <%=replace(Trim(conn.execute( "select slink from s where sid= "&stypelist(0))( "slink ")), "$$$$ ", URLEncode8(skey))%> " width= "100% " height= "100% "> </iframe>
------解决方案--------------------
取值用escape显示用unescape,确实很好用
------解决方案--------------------
这个我也碰到过,你可参看http://www.zhaodao.net/上面的搜索功能,至于乱码,可用escape()函数解决。