Danske bogstaver giver intet søgeresultat i databasesøgning
Jeg har en dansk-engelsk ordbog liggende i en Access database. For at kunne slå ord op i databasen, har jeg indlejret ASP-filer i et CMS-system (Obvius).Databasen indeholder ord med æ, ø og å. Hvis man søger på fx "å" får man ingen resultater til trods for at der er ord der begynder med "å" i basen. Hvis man søger på "direktør" kommer der ingen resultater fordi ordet indeholder "ø", men søger man på fx "dir" kommer ordet "direktør" frem. Man kan altså ikke søge på danske bogstaver, men de kan godt vises på resultatlisten og vises iøvrigt rigtigt (altså ikke som mærkelige tegn). Se evt. ordbogen her og prøv selv: http://ku.dk
Jeg forestiller mig at der går noget galt i fortolkningen af danske bogstaver idet man kalder databasen, men kan ikke gennemskue præcist hvor og hvordan jeg løser det.
CMS siderne bruger utf-8. Asp siderne indlejres i CMS'et og ser ud til at nedarve metadata/<head> herfra (når man kigger på kildekoden udefra). Der er én ASP side til søgeformularen og resultaterne vises på en anden ASP side. Asp siderne ligger på en anden server end CMS-systemet.
ASP-side 1:
<body>
<form method="POST" action="http://ordbog.ku.dk/daen_result/">
<input name="Keyword" size="40" tabindex="1">
<input type="submit" value="Søg" name="Action" tabindex="3">
<input type="reset" value="Clear" name="Reset" tabindex="4"><br><br>
</form><br>
</body>
ASP-side 2:
<%@ Language=VBScript %>
<%
'Set the server locale
Session.LCID = 1030
%>
<body>
<!-- Standard doctype: -->
<H1>Søgeresultat</H1>
<%
strKeyword = request.form("Keyword")
set myConn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath("kulex.mdb")
myConn.Open DSN
If Len(strKeyword) = 0 Then
Response.Clear
Response.Redirect("http://ordbog.ku.dk")
Else
strKeyword = Replace(strKeyword,"'","<B>''</B>")
End If
'SQL- sætning henter data
strSQL = "SELECT tbl_danish.id_dansk, tbl_danish.Dansk, tbl_danish.dk_definition, tbl_english.id_english, tbl_english.Engelsk FROM tbl_danish INNER JOIN tbl_english ON tbl_danish.id_dansk = tbl_english.fr_dansk WHERE"
strSQL = strSQL & " (tbl_danish.Dansk LIKE '" & strKeyword & "%') ORDER BY Dansk ASC, Engelsk ASC"
Set rs = myConn.Execute(strSQL)
%>
<%
' Skaber et recordset udfra SQL strengen
Set rs = myConn.Execute(strSQL)
If Not (rs.BOF Or rs.EOF) Then
' Hvis der er fundet poster på søgningen
Response.Write "<table class=list cellspacing=0 border=0 margin=0 padding=0>"
Response.Write "<tr><th valign=""middle"" width=""15%""><h3>Dansk</h3></th><th valign=""middle"" width=""15%""><h3>Engelsk</h3></th><th valign=""middle"" width=""15%""><h3>Kommentar</h3></th></tr>"
Do While Not rs.EOF
dim Dansk
Dansk = rs("Dansk")
dim Engelsk
Engelsk = rs("Engelsk")
Response.Write "<tr><td>" & rs("Dansk") & "</td>"
Response.Write "<td>" & rs("Engelsk") & "</td>"
Response.Write "<td>" & rs("dk_definition") & "</td></tr>"
rs.MoveNext
Loop
Response.Write "</table>"
Else
' Hvis der ikke er fundet poster på søgningen
Response.Write "Der blev ikke fundet noget på denne søgning. Søg eventuelt på noget andet."
End If
' Rydder op efter os
myConn.Close
Set myConn = Nothing
%>
<!-- :Standard doctype -->
</body>