Avatar billede apo Praktikant
26. marts 2005 - 13:58 Der er 19 kommentarer og
1 løsning

Erstat %20 med + i en QueryString?

Hej :-)

Kosmetisk spørgsmål: Hvordan ændrer jeg %20 til + i en QueryString?

Jeg skal bruge det til at gøre QueryStringen i en søgefunktion pænere. Nu har jeg prøvet med forskellige løsninger, bl.a. denne:

<%
    ' # ÆNDRER MELLEMRUM TIL + I QUERYSTRINGEN
        If Instr(strSoegeord," ") > 0 Then
          strSoegeordTemp = Replace(strSoegeord," ","+")
          Response.Clear
          Response.Redirect "Soeg.asp?Soegeord=" & strSoegeordTemp & "Avanceret=" & strAvanceret & "&Side=" & Request.QueryString("Side")
        End If
%>

... Men det virker ikke :-/

Nogen der har et forslag til hvordan jeg gør?

Apo
Avatar billede eagleeye Praktikant
26. marts 2005 - 14:02 #1
Umiddelbart kkan du bruger Server.URLEncide i stedet for replace:

Response.Redirect "Soeg.asp?Soegeord=" & Server.URLEncode(strSoegeordTemp) & "Avanceret=" & strAvanceret & "&Side=" & Request.QueryString("Side")
Avatar billede eagleeye Praktikant
26. marts 2005 - 14:02 #2
Så skal du nemlig ikke tænke på at replace frem og tilbage.
Avatar billede eagleeye Praktikant
26. marts 2005 - 14:04 #3
Der mangler så lige et & teng foran Avanceret i querystringen:


Response.Redirect "Soeg.asp?Soegeord=" & Server.URLEncode(strSoegeordTemp) & "&Avanceret=" & strAvanceret & "&Side=" & Request.QueryString("Side")
Avatar billede apo Praktikant
26. marts 2005 - 14:14 #4
Det virker ikke :-/

Lidt uddybende forklaring:
Brugeren indtaster f.eks. flere ord i søgefeltet (Soegeord="telt rygsæk"). Herefter ser QueryStringen således ud: Soegeord=telt%20rygsæk.

Da jeg i søgefunktionen har en funktion der leder efter mellemrum (søgning på flere ord adskilt af mellemrum), vil jeg midlertidigt ændre mellemrummene til et plustegn (+) i QueryStringen.

Herefter har jeg en funktion:

<%
If Instr(strSoegeord,"+") > 0 Then
  strSoegeord = Replace(strSoegeord,"+"," ")
End If
%>

Denne funktion ændrer plustegnet til et mellemrum igen, da søgefunktionen stadig opdeler søgesætningen ved mellemrum.

Håber at det giver et bedre billede :-)

Apo
Avatar billede apo Praktikant
26. marts 2005 - 14:15 #5
det manglende &-tegn er rettet...

Apo
Avatar billede apo Praktikant
26. marts 2005 - 15:27 #6
Ahh, nu har jeg fundet ud af det med Server.URLEncode... Nu er problemet så, at 'æ', 'ø' og 'å' ikke bliver vist korrekt :-/

Hurtig løsning på det problem, så er der points...

Apo
Avatar billede apo Praktikant
26. marts 2005 - 15:33 #7
Nu er spørgsmålet jo opgraderet, så jeg hæver lige pointene til 30 :-)

Apo
Avatar billede apo Praktikant
26. marts 2005 - 16:40 #8
Roenving > Hvis du ikke har et svar på hvordan man får vist æ, ø og å korrekt i en QueryString, skal det i hvert fald ikke udelukke dine points for det oprindelige spørgsmål...

Smid et svar.

Apo
Avatar billede apo Praktikant
26. marts 2005 - 16:41 #9
Hov... :-D Eagleeye, mener jeg selvfølgelig!
Avatar billede eagleeye Praktikant
26. marts 2005 - 17:14 #10
umiddelbart har jeg ikke problem med øæå hvad sker der?

Det kan måske være noget med codepage, prøv at tilføje denne linje:
Response.CodePage=1250
Avatar billede apo Praktikant
26. marts 2005 - 17:22 #11
Det giver desværre følgende fejl:

Microsoft VBScript runtime error '800a01b6'
Object doesn't support this property or method: 'Response.CodePage'
/Soeg.asp, line 19
Avatar billede eagleeye Praktikant
26. marts 2005 - 17:27 #12
ok,
men problemet giver æøå ?
Avatar billede apo Praktikant
26. marts 2005 - 17:30 #13
Problemet er at QueryStringen ser således ud, ved søgning på: "rygsæk førstehjælp":

Soegeord=rygs%E6k+f%F8rstehj%E6lp
Avatar billede eagleeye Praktikant
26. marts 2005 - 17:31 #14
Så skal der ikke være urlencode omkring. Den lave de tegn om til noget som ikke kan misforståes i querystringen.
Avatar billede apo Praktikant
26. marts 2005 - 17:32 #15
Okay, skal jeg så tilbage til Replace()?
Avatar billede eagleeye Praktikant
26. marts 2005 - 17:37 #16
Ja så det replace
Avatar billede eagleeye Praktikant
26. marts 2005 - 17:39 #17
+ bliver til mellemrum, så umiddelbart skulle dette virker:


Response.Redirect "Soeg.asp?Soegeord=" & replace(strSoegeordTemp," ","+") & "&Avanceret=" & strAvanceret & "&Side=" & Request.QueryString("Side")

Så når du henter Soegeord med request.querystring er + så ikke blevet til mellemrum?
Avatar billede apo Praktikant
26. marts 2005 - 17:47 #18
Var det bare det der skulle til? Hold da helt... hvor kan jeg gøre tingene svære end de i virkeligheden er!

Nu virker det præcis efter hensigten :-)

Smid et svar, så er der 30 points på vej til dig...

Apo
Avatar billede eagleeye Praktikant
26. marts 2005 - 17:49 #19
hehe ok, her et svar så ;)
Avatar billede apo Praktikant
26. marts 2005 - 17:51 #20
Hehe, jeg var ude i forestillingen om den helt store og indviklede kode, før det ville virke, og så er det bare en sk... sætning der manglede at blive placeret korrekt :-D

Points til dig, med stor tak for hjælpen!

// Lukker

Apo
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester