Je ne sais pas pourquoi les encodages des principaux moteurs de recherche sont actuellement différents. Bien sûr, c'est soit gb2312, soit utf-8. Le problème d'encodage est un casse-tête... C'est un casse-tête...
Nous obtenons des mots-clés, généralement via les sites visités. Les pages.L'URL est analysée. Par exemple,
http://www.google.com/search?hl=zh-CN&q=%E5%AD%A4%E7%8B%AC&lr =
Vous devez savoir que ceci est codé par urlencode.
Nous obtenons que les informations doivent être effectuées en 2 étapes. La première étape consiste à effectuer le décodage d'url. Lorsque nos paramètres ordinaires sont valides, cela est effectué par asp lui-même, mais nous devons maintenant effectuer un décodage manuel
sur Internet
., mais ils sont tous pour Decode gb2312.utf-8 sur la page gb2312. Pour cela, nous pouvons d'abord le décoder facilement, puis juger son encodage en fonction du moteur de recherche. S'il s'agit d'utf-8, puis le convertir en gb2312. Mais
comme mon site Web est une page utf-8, la seule chose que j'ai trouvée était l'encodage urldecode des caractères utf-8. J'ai finalement fait une longue pause ici. la pire méthode, en soumettant les mots-clés séparés à l'aide de xmlhttp. Accédez à une page asp gb2312, puis convertissez gb2312 en utf-8 après un code tronqué (gb2312).
Ce qui suit est le code d'implémentation principalGetSearchKeyword (RefererUrl) 'Rechercher
.
mots-clés
si RefererUrl="" ou len(RefererUrl)<1 alors quittez la fonction
en cas d'erreur, reprendre ensuite
Dim ré
Définir re = Nouvelle RegExp
re.IgnoreCase = Vrai
re.Global = Vrai
Dim a,b,j
"Mots clés de recherche flous, cette méthode est plus rapide et a une portée plus large
re.Pattern = "(word=([^&]*)|q=([^&]*)|p=([^&]*)|query=([^&]*)|name=([ ^&]*)|_searchkey=([^&]*)|baidu.*?w=([^&]*))"
Définir a = re.Execute (RefererUrl)
Si a.Count>0 alors
Définir b = a(a.Count-1).SubMatches
Pour j=1 à b.Count
Si Len(b(j))>0 alors
si instr(1,RefererUrl,"google",1) alors
GetSearchKeyword=Trim(U8Decode(b(j)))
elseif instr(1,refererurl,"yahoo",1) alors
GetSearchKeyword=Trim(U8Decode(b(j)))
elseif instr(1,refererurl,"yisou",1) alors
GetSearchKeyword=Trim(getkey(b(j)))
elseif instr(1,fererurl,"3721",1) alors
GetSearchKeyword=Trim(getkey(b(j)))
autre
GetSearchKeyword=Trim(getkey(b(j)))
finir si
Fonction de sortie
finir si
Suivant
Fin si
si c'est une erreur, alors
err.clear
GetSearchKeyword = RefererUrl
autre
GetSearchKeyword = ""
finir si
Fonction de fin
Fonction URLEncoding(vstrIn)
dim strReturn,i,thischr
strRetour = ""
Pour i = 1 À Len(vstrIn)
ThisChr = Milieu(vStrIn,i,1)
Si Abs(Asc(ThisChr)) < &HFF Alors
strReturn = strReturn & ThisChr
Autre
codeintérieur = Asc(ThisChr)
Si innerCode < 0 Alors
CodeInner = CodeInner + &H10000
Fin si
Hauteur8 = (code intérieur et &HFF00) &HFF
Low8 = innerCode et &HFF
strReturn = strReturn & "%" & Hex(Hight8) & "%" & Hex(Low8)
Fin si
Suivant
URLEncoding = strReturn
Fonction de fin
fonction getkey(clé)
dimoReq
définir oReq = CreateObject("MSXML2.XMLHTTP")
oReq.open "POST", http://"&WebUrl&"/system/ShowGb2312XML.asp?a="&key,false
oReq.send
getkey=UTF2GB(oReq.responseText)
fonction de fin
fonction chinois2unicode(Str)
dimi
faible Str_one
dimStr_unicode
pour i=1 à len(Str)
Str_one=Milieu(Str,i,1)
Str_unicode=Str_unicode&chr(38)
Str_unicode=Str_unicode&chr(35)
Str_unicode=Str_unicode&chr(120)
Str_unicode=Str_unicode& Hex(ascw(Str_one))
Str_unicode=Str_unicode&chr(59)
suivant
Réponse.Write Str_unicode
fonction de fin
fonction UTF2GB(UTFStr)
Dim fouille,GBSTR
pour Dig=1 à len(UTFStr)
si mid(UTFStr,Dig,1)="%" alors
si len(UTFStr) >= Dig+8 alors
GBStr=GBStr & ConvChinese(mid(UTFStr,Dig,9))
Creuser=Creuser+8
autre
GBStr=GBStr & mi(UTFStr,Dig,1)
finir si
autre
GBStr=GBStr & mi(UTFStr,Dig,1)
finir si
suivant
UTF2GB=GBStr
fonction de fin
fonction ConvChinese(x)
dim a,i,j,DigS,Unicode
A=divisé(milieu(x,2),"%")
je = 0
j=0
pour i=0 à ubound(A)
UNE(je)=c16à2(UNE(je))
suivant
pour i=0 à ubound(A)-1
DigS=instr(A(i),"0")
Unicode=""
pour j=1 à DigS-1
si j=1 alors
A(i)=droite(A(i),len(A(i))-DigS)
Unicode=Unicode & A(i)
autre
je=je+1
A(i)=droite(A(i),len(A(i))-2)
Unicode=Unicode & A(i)
finir si
suivant
si len(c2to16(Unicode))=4 alors
ConvChinese=ConvChinese & chrw(int("&H" & c2to16(Unicode)))
autre
ConvChinese=ConvChinese & chr(int("&H" & c2to16(Unicode)))
finir si
suivant
fonction de fin
fonction U8Decode(enStr)
'Entrez un tas de chaînes séparées par %, divisez-les d'abord en tableaux et jugez les règles d'achèvement selon les règles utf8
'Entrée : Off E5 85 Touche B3 E9 94 Mot AE E5 AD 97
'Sortie : Off Touche B9D8 Mot BCFC D7D6
dim c,i,i2,v,deStr,WeiS
pour i=1 à len(enStr)
c=Mid(enStr,i,1)
si c="%" alors
v=c16to2(Mid(enStr,i+1,2))
'Déterminer la position où 0 apparaît pour la première fois,
'peut être 1 (un seul octet), 3 (3-1 octets), 4, 5, 6, 7 ne peut pas être 2 et supérieur à 7
« En théorie, il atteint 7, mais en pratique, il ne dépassera pas 3.
WeiS=instr(v,"0")
v=right(v,len(v)-WeiS)'Le premier supprime le WeiS le plus à gauche
je = je + 3
pour i2=2 à WeiS-1
c=c16to2(Mid(enStr,i+1,2))
c=right(c,len(c)-2)'Supprimez les deux plus à gauche du reste
v = v & c
je = je + 3
suivant
si len(c2to16(v)) =4 alors
deStr=deStr & chrw(c2to10(v))
autre
deStr=deStr & chr(c2to10(v))
finir si
je = je-1
autre
si c="+" alors
deStr=deStr&" "
autre
deStr=deStr&c
finir si
finir si
suivant
U8Décode = deStr
fonction de fin
fonction c16to2(x)
'Cette fonction est utilisée pour convertir l'hexadécimal en binaire. Elle peut être de n'importe quelle longueur. Généralement, lors de la conversion d'UTF-8, il s'agit de deux longueurs, comme A9.
'Par exemple : saisissez "C2", il sera converti en "11000010", où 1100 est "c" qui vaut 12 (1100) en décimal, puis 2 (10) doit être complété par 4 chiffres inférieurs à 4 pour devenir ( 0010).
dimtempsstr
dim i:i=0'pointeur temporaire
pour i=1 vers len(trim(x))
tempstr= c10to2(cint(int("&h" & mid(x,i,1))))
faire pendant len(tempstr)<4
tempstr="0" & tempstr'S'il y a moins de 4 chiffres, alors remplissez 4 chiffres
boucle
c16to2=c16to2 & tempstr
suivant
fonction de fin
fonction c2to16(x)
"Conversion de binaire en hexadécimal, chaque 4 0 ou 1 est converti en lettre hexadécimale, bien sûr, la longueur d'entrée ne peut pas être un multiple de 4
dim i:i=1" pointeur temporaire
pour i=1 à len(x) étape 4
c2to16=c2to16 & hex(c2to10(mid(x,i,4)))
suivant
fonction de fin
fonction c2to10(x)
« Conversion simple de binaire en décimal, ne prend pas en compte les 4 premiers zéros requis pour la conversion en hexadécimal.
« Parce que cette fonction est très utile ! Il sera utilisé à l'avenir, et les personnes qui ont fait de la communication et du matériel devraient le savoir.
'La chaîne est utilisée ici pour représenter le binaire
c2à10=0
si x="0" alors quittez la fonction "Si c'est 0, obtenez simplement 0 et c'est terminé.
dim i:i=0'pointeur temporaire
pour i= 0 à len(x) -1' Sinon, utilisez le code 8421 pour calculer. Cela est connu depuis que j'ai commencé à apprendre l'informatique, M. Xie Daojian me manque, il nous a tant appris !
si mid(x,len(x)-i,1)="1" alors c2to10=c2to10+2^(i)
suivant
fonction de fin
fonction c10to2(x)
'Conversion de décimal en binaire
signe sombre, résultat
résultat = ""
'symbole
signe = sgn(x)
x = abs(x)
si x = 0 alors
c10à2 = 0
fonction de sortie
finir si
faire jusqu'à ce que x = "0"
résultat = résultat & (x mod 2)
x = x2
boucle
résultat = strReverse (résultat)
si signe = -1 alors
c10to2 = "-" & résultat
autre
c10to2 = résultat
finir si
fonction de fin
fonction URLDecode(enStr)
dim deStr,strSpécial
faible c,i,v
deStr=""
strSpecial="!""#$%&'()*+,/:;<=>?@[]^`{ |}~%"
pour i=1 à len(enStr)
c=Mid(enStr,i,1)
si c="%" alors
v=eval("&h"+Mid(enStr,i+1,2))
si inStr(strSpecial,chr(v))>0 alors
deStr=deStr&chr(v)
je = je + 2
autre
v=eval("&h"+Mid(enStr,i+1,2)+Mid(enStr,i+4,2))
deStr=deStr&chr(v)
je = je + 5
finir si
autre
si c="+" alors
deStr=deStr&" "
autre
deStr=deStr&c
finir si
finir si
suivant
URLDecode=deStr
Fin de la fonction
De nombreux codes sont en ligne. L'auteur est introuvable.
PS : Je dois accepter les vacances d'été maintenant. Pour des raisons familiales, je ne veux pas rester dans ma ville. . Je ne veux pas dire le nom de la ville, sinon j'attirerai des connaissances tant que je ne serai pas là. Pouvez-vous contacter l'école du Shandong qui est considérée comme un point
clé
? programmation, mais je ne peux obtenir que le nom X de première classe à l'Olympiade de l'information. Parce que je pense que la technologie ne devrait pas être reflétée dans la soi-disant compétition, tout comme le talent ne devrait pas le faire. Les performances sont les mêmes dans ces examens dénués de sens. J'ai obtenu la première place dans chaque province dans mes travaux électroniques... mais c'est juste moyen Mes études sont moyennes... donc tant que c'est l'objectif général... je ne veux juste pas être trop près de chez moi.
Maintenant, ASP est très compétent, bien qu'il y ait quelques lacunes dans les connaissances, comme des problèmes de codage (sueur...), mais le réseau est si grand que je pense que je ne peux pas seulement obtenir les soi-disant connaissances des manuels. lire le livre ASP.NET, s'il est cher. Le site Web de l'école peut certainement aider.
Je suis très enthousiasmé par les nouvelles technologies, même si je suis appelé une personne ayant une déficience esthétique. Mais je veux voir la structure de mon programme sans vomir de sang.
Oubliez ça... Plus de messages.
J'ai développé D Database +asp ->xml+xslt->xhtml +css qui s'appelle CMS
utilise également l'éditeur FCK utilisé par CSDN. J'ai découvert qu'il avait été modifié lorsque je suis arrivé aujourd'hui. Mais le système de fichiers FCK, laissez-moi tout changer,
ce système sera certainement publié avant la fin des vacances d'été. Cependant, de nombreux amis disent qu'il y a des problèmes de facilité d'utilisation. .. beaucoup de gens ne savent pas comment xslt. Soupir...
Si je ne trouve pas l'école, je pourrais errer, peut-être disparaître. Bien sûr, ce n'est pas une menace... Je déteste juste ma ville, je déteste tout ce que je vois et fais là-bas.