Avatar billede jih Nybegynder
30. marts 2009 - 15:32 Der er 2 kommentarer og
1 løsning

Haster: ASP med VBScript har problemer med at finde færøske/danske bogstaver

Hej,
funktionen kan testes her:

http://www.kortal.fo/testAjax.htm

Jeg skal blive færdig med det her i dag, og har lidt problemer med at få det at virke med færøske (danske) bogstaver.
Jeg har fået færøske bogstaver at virke ved udtag fra DB, men når jeg skriver i tekstfeltet, får jeg mærkelige tegn når jeg skriver færøske bogstaver.

Er der nogen der har erfaring med dette og/eller kan hjælpe mig med dette problem asap?
Giver 200 points, siden det haster så meget..

lidt forklaring om layout/ord på siden - dette er irrelevant til selve opgaven, men lidt information for at vide hvad der sker, når man tester:
- Vegnavn = Vejnavn
- Uppskot = Forslag
- Efter "Uppskot" kan man se et tal, som så er hvor mange tegn du har skrevet i tekstfeltet (kommer kun til at stå der i test-fasen - indtil problemet med færøske bogstaver er løst)
- longd = længde (dette er længden af felt-værdien i DB - også kun i testfasen)
- vegur = vej
- x/y = koordinater

På forhånd tak! :-)

// jih
Avatar billede jih Nybegynder
30. marts 2009 - 16:41 #1
ud af al desperation er jeg kommet frem til en løsning sådan her:

Function EncodeChars(myString)
    Dim intI
    Dim tmpA
   
    For intI = 1 To Len(myString)
        If (Asc(Mid(myString, intI, 1)) = 195) Then
            If (Asc(Mid(myString, intI + 1, 1)) = 184) Then
                myString = Left(myString, intI - 1) & "ø" & Right(myString, Len(myString) - intI)
            End If
        End If
        tmpA = tmpA & Asc(Mid(myString, intI, 1)) & ","
    Next
   
    EncodeChars = tmpA
End Function

problemet er bare at den ikke virker helt fuldstændigt.. Jeg har fået den til at erstatte Chr(195) med Chr(248) når man skriver "ø", men det efterfølgende Chr(184) bliver ved med at være der. Nogen der har nogle forslag?
Avatar billede jih Nybegynder
30. marts 2009 - 18:36 #2
det er nu blevet klaret med følgende:

Function EncodeChars(myString)
    Dim intI
    Dim tmpA
    tmpA = myString
    For intI = 1 To Len(myString)
        If (Asc(Mid(myString, intI, 1)) = 195) Then
            If (Asc(Mid(myString, intI + 1, 1)) = 161) Then
                tmpA = Left(myString, intI - 1) & "á" & Right(myString, (Len(myString) - (intI + 1)))
            ElseIf (Asc(Mid(myString, intI + 1, 1)) = 129) Then
                tmpA = Left(myString, intI - 1) & "Á" & Right(myString, (Len(myString) - (intI + 1)))
            ElseIf (Asc(Mid(myString, intI + 1, 1)) = 176) Then
                tmpA = Left(myString, intI - 1) & "ð" & Right(myString, (Len(myString) - (intI + 1)))
            ElseIf (Asc(Mid(myString, intI + 1, 1)) = 144) Then
                tmpA = Left(myString, intI - 1) & "Ð" & Right(myString, (Len(myString) - (intI + 1)))
            ElseIf (Asc(Mid(myString, intI + 1, 1)) = 173) Then
                tmpA = Left(myString, intI - 1) & "í" & Right(myString, (Len(myString) - (intI + 1)))
            ElseIf (Asc(Mid(myString, intI + 1, 1)) = 141) Then
                tmpA = Left(myString, intI - 1) & "Í" & Right(myString, (Len(myString) - (intI + 1)))
            ElseIf (Asc(Mid(myString, intI + 1, 1)) = 179) Then
                tmpA = Left(myString, intI - 1) & "ó" & Right(myString, (Len(myString) - (intI + 1)))
            ElseIf (Asc(Mid(myString, intI + 1, 1)) = 147) Then
                tmpA = Left(myString, intI - 1) & "Ó" & Right(myString, (Len(myString) - (intI + 1)))
            ElseIf (Asc(Mid(myString, intI + 1, 1)) = 186) Then
                tmpA = Left(myString, intI - 1) & "ú" & Right(myString, (Len(myString) - (intI + 1)))
            ElseIf (Asc(Mid(myString, intI + 1, 1)) = 154) Then
                tmpA = Left(myString, intI - 1) & "Ú" & Right(myString, (Len(myString) - (intI + 1)))
            ElseIf (Asc(Mid(myString, intI + 1, 1)) = 189) Then
                tmpA = Left(myString, intI - 1) & "ý" & Right(myString, (Len(myString) - (intI + 1)))
            ElseIf (Asc(Mid(myString, intI + 1, 1)) = 157) Then
                tmpA = Left(myString, intI - 1) & "Ý" & Right(myString, (Len(myString) - (intI + 1)))
            ElseIf (Asc(Mid(myString, intI + 1, 1)) = 166) Then
                tmpA = Left(myString, intI - 1) & "æ" & Right(myString, (Len(myString) - (intI + 1)))
            ElseIf (Asc(Mid(myString, intI + 1, 1)) = 134) Then
                tmpA = Left(myString, intI - 1) & "Æ" & Right(myString, (Len(myString) - (intI + 1)))
            ElseIf (Asc(Mid(myString, intI + 1, 1)) = 184) Then
                tmpA = Left(myString, intI - 1) & "ø" & Right(myString, (Len(myString) - (intI + 1)))
            ElseIf (Asc(Mid(myString, intI + 1, 1)) = 152) Then
                tmpA = Left(myString, intI - 1) & "Ø" & Right(myString, (Len(myString) - (intI + 1)))
            End If
        End If
    Next
   
    EncodeChars = tmpA
End Function

mit eneste problem er at jeg ved ikke hvordan jeg kan tjekke for flere færøske bogstaver i navnet. Hvis man fx skriver æ, bliver det encodet rigtigt, men hvis jeg skriver æø, bliver det til æø..

Nogen der kan hjælpe med dette?

På forhånd tak..

// jih
Avatar billede jih Nybegynder
30. marts 2009 - 19:16 #3
løste problemet ved at smide en Exit For ind i hver If blok of bruge en Do While .. Loop rundt om For .. Next loopet
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