Avatar billede pernille_bergman Nybegynder
01. december 2003 - 09:33 Der er 4 kommentarer og
1 løsning

URL encoding ved æ,ø og å

Jeg har brug for at overføre en mails subject til en website via en querystring i URL'en. Jeg får bare et problem når mails'ne har æ, ø og å i subejctet.

Jeg URL encoder med koden:

Private Function URLEncode(str As String) As String
    Dim strTemp, strChar As String
    strTemp = ""
    strChar = ""
    Dim nTemp, nAsciiVal As Integer

    For nTemp = 1 To Len(str)
        nAsciiVal = Asc(Mid(str, nTemp, 1))
        If ((nAsciiVal < 123) And (nAsciiVal > 96)) Then
        strTemp = strTemp & Chr(nAsciiVal)
        ElseIf ((nAsciiVal < 91) And (nAsciiVal > 64)) Then
        strTemp = strTemp & Chr(nAsciiVal)
        ElseIf ((nAsciiVal < 58) And (nAsciiVal > 47)) Then
        strTemp = strTemp & Chr(nAsciiVal)
        Else
        strChar = Trim(Hex(nAsciiVal))
        If nAsciiVal < 16 Then
            strTemp = strTemp & "%0" & strChar
        Else
            strTemp = strTemp & "%" & strChar
        End If
        End If
    Next
    URLEncode = strTemp
End Function

Men denne kode omdanner æøå til a%F8%E5, hvorefter jeg så ikke kan hente den rigtige subject via querystringen.

Er der nogen der har en ide til hvordan jeg får ændret æ,ø og å til f. eks ae, o, og aa?
Avatar billede martin_moth Mester
01. december 2003 - 10:09 #1
Har du ikke selv givet løsningen? Læs din string tegne for tegn, tjek Ansi-værdien. Svarer den Æ ændrer du til Ae, er den æ ændrer du til ae osv...

Jeg kan ikke lige ANSI-tabellen i hovedet, men tjek for de værdier der ligger for æøåÆØÅ, og skift så ud
Avatar billede martin_moth Mester
01. december 2003 - 10:32 #2
Sub Test
    Dim str As String
    Dim strTemp As String
   
    str = "Åse spiser æbler, pærer og østers"
   
    Dim nTemp As Integer
    Dim nAsciiVal As Integer

    For nTemp = 1 To Len(str)
      Select Case Asc(Mid(str, nTemp, 1))
        Case 198 'Æ
          strTemp = strTemp & "Ae"
        Case 216 'Ø
          strTemp = strTemp & "Oe"
        Case 197 'Å
          strTemp = strTemp & "Aa"
        Case 230 'æ
          strTemp = strTemp & "ae"
        Case 248 'ø
          strTemp = strTemp & "oe"
        Case 229 'å
          strTemp = strTemp & "aa"
        Case Else
          strTemp = strTemp & Mid(str, nTemp, 1)
      End Select
    Next nTemp
    MsgBox strTemp
End Sub

Denne sub skifter Æ Ø Å æ ø å ud med AE Oe Aa ae oe aa.
Avatar billede martin_moth Mester
01. december 2003 - 10:36 #3
Du havde jo selv lavet alt det "svære" - men kunne måske ikke se skoven for bare træer ;o)

Tak for points
Avatar billede pernille_bergman Nybegynder
01. december 2003 - 10:55 #4
Det var så lidt :)
Avatar billede sjh Nybegynder
01. december 2003 - 11:57 #5
pernille_bergman < nu ved ikke havd du skal bruge det til... men her er både URLDecode og URLEncode og det må vel være den rigtige måde at gøre det på ;)

http://www.vbarchiv.net/archiv/tipp_139.html
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