Avatar billede Slettet bruger
29. juli 2008 - 09:38 Der er 19 kommentarer og
1 løsning

Erstat af danske tegn virker ikke

Hej

Jeg har følgende som skal lave en søg og erstat på æ, ø og å, men det virker bare ikke:

strInput = replace(strInput, "æ", "æ")
strInput = replace(strInput, "ø", "ø")
strInput = replace(strInput, "å", "å")
strInput = replace(strInput, "Æ", "Æ")
strInput = replace(strInput, "Ø", "Ø")
strInput = replace(strInput, "Å", "Å")

strInput kommer fra en access database og jeg har indkluderet Session.LCID = 1030, men det virker som sagt ikke... Nogen har en ide?!?
Avatar billede w13 Novice
29. juli 2008 - 09:41 #1
Bliver bogstaverne bare ikke erstattet?
Avatar billede w13 Novice
29. juli 2008 - 09:41 #2
Er du sikker på, du kører din kode rigtigt? :)
Avatar billede Slettet bruger
29. juli 2008 - 09:44 #3
Nej, de gør desværre ikke... Jeg kan erstatte alle andre standard tegn, men ikke æ, ø og å.
Avatar billede Slettet bruger
29. juli 2008 - 09:44 #4
Følgende virker fx fint:

strInput = replace(strInput, vbCrLf, "\r\n")
Avatar billede Slettet bruger
29. juli 2008 - 09:45 #5
Og jeg har lavet følgende test, men den virker heller ikke:

strInput = replace(strInput, "ø", "xxx")
Avatar billede erikjacobsen Ekspert
29. juli 2008 - 09:46 #6
Hvilket tegnsæt er din .asp-fil lavet med?
Hvilket tegnsæt står der i din database?
Avatar billede Slettet bruger
29. juli 2008 - 09:49 #7
Følgende tegnsæt kører på asp filen:

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">

Håber det er det svar du søgte efter ud over at jeg har sat Session.LCID = 1030.

Men hvor ser jeg tegnsættet i databasen?!?
Avatar billede erikjacobsen Ekspert
29. juli 2008 - 09:55 #8
Det er ikke det jeg spørger efter. Med en vis sandsynlighed drejer det sig om enten iso-8859-1 eller utf-8.

1) Du har gemt din .asp-fil med en editor af en slags. Hvilket tegnsæt er den gemt med.
2) Du har puttet data i tabellen i databasen - fra en webside? Hvilket tegnsæt blev brugt, da data blev puttet i?
Avatar billede erikjacobsen Ekspert
29. juli 2008 - 09:59 #9
...og når vi nu er ved det - hvis du bruger det samme tegnsæt hele vejen igennem, skal man ikke spilde sine kræfter på at erstatte til html-entities, selv om man selvfølgelig gerne må.

Man skal vide lidt om tegnsæt for at kunne lave websider i dag. Gør man det ikke, skal man enten holde sig væk, så man ikke blivet til grin, :), eller lære noget om det. Start fx her: http://joelonsoftware.com/articles/Unicode.html
Avatar billede Slettet bruger
29. juli 2008 - 10:03 #10
Uha, det er første gang at jeg bevæger mig ud i det her med tegnsæt. Men siden er som følger og den er skrevet i Stones Webwriter. Indputtet i databasen bliver også genereret i sider lavet af Webwriter. Her er siden - og der er endnu ikke valideret html mv. Men hjælper det dig lidt på vej?!? Serveren er i øvrigt hos starthotel hvis du skal bruge det.

<% Session.LCID = 1030 %>
<!--#include file="includes/db_open.asp" -->
<!--#include file="includes/common_login_check.asp" -->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<!--#include file="includes/common_css.asp" -->
    <title>Administration</title>
<meta name="Generator" content="Stone's WebWriter 4" />
</head>
<body bgcolor="#434343" style="margin:0px;" text="#000000">
<br /><br /><table width="100%" border="0">
<tr>
    <td align="center" bgcolor="#FFFFFF"><!--#include file="includes/common_menu.asp" --></td>
</tr>
</table><br /><br /><table width="100%" border="0">
<tr>
    <td align="center" bgcolor="#FFFFFF"><br /><table width="768" border="0">
<tr>
    <td align="left"><font face="Trebuchet MS" size="2" color="#000000"><%
Set rs = Server.CreateObject("ADODB.Recordset")
strSQL = "SELECT * FROM "&request("sql")&";"
rs.Open strSQL, conn, 1, 3
If Not (rs.BOF Or rs.EOF) Then
rs.move 0
  Do While Not rs.EOF
strInput = rs("beskrivelse")
strInput = replace(strInput, vbCrLf, "\r\n")
strInput = replace(strInput, "æ", "&aelig;")
strInput = replace(strInput, "ø", "&oslash;")
strInput = replace(strInput, "å", "&aring;")
strInput = replace(strInput, "Æ", "&AElig;")
strInput = replace(strInput, "Ø", "&Oslash;")
strInput = replace(strInput, "Å", "&Aring;")
%><%=strInput%><%
rs.MoveNext
Loop
end if
rs.Close
Set rs = Nothing
%></font></td>
</tr>
</table><br /></td>
</tr>
</table>
</body>
</html>
<!--#include file="includes/db_close.asp" -->
Avatar billede Slettet bruger
29. juli 2008 - 10:04 #11
Det er helt rigtig vedr. tegnsæt, men det er udelukkende blot fordi at jeg skal hente noget data ned fra en database og ligge den over i en anden.
Avatar billede erikjacobsen Ekspert
29. juli 2008 - 10:26 #12
Det besvarer stadig ikke de to spørgsmål jeg har. Nu ved ikke noget om hverken Stones Webwriter eller starthotel, men måske kan vi komme lidt nærmere.

Når du gemmer med Stones Webwriter, hvilket tegnsæt kan du så vælge mellem i Gem-dialogen?

Mht starthotel vil det være rart at få et link til en .asp side hos dig, så vi kan se hvilket tegnsæt dit webhotel vælger.

Ud fra dette kan vi måske deducere hvilket tegnsæt dine data i databasen er gemt med.
Avatar billede Slettet bruger
29. juli 2008 - 10:32 #13
Hej igen

Der er ikke mulighed for at ændre tegnsæt i Webwriter, så gætter på at den bruger windows standard?!?

Mht en side på starthotel, så har jeg lagt en kopi her: http://www.primaplast.dk/test.asp

Og siden ser sådan her ud:

<% Session.LCID = 1030 %>
<%
Session.Timeout = 60
Set conn = Server.CreateObject("ADODB.Connection")
strDNS = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath( "xxx" )&"; UID=xxx; PWD=xxx;"
conn.open strDNS
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
    <title>Administration</title>
<meta name="Generator" content="Stone's WebWriter 4" />
</head>
<body bgcolor="#434343" style="margin:0px;" text="#000000">
<table width="100%" border="0">
<tr>
    <td align="center" bgcolor="#FFFFFF"><br /><table width="768" border="0">
<tr>
    <td align="left"><font face="Trebuchet MS" size="2" color="#000000"><%
Set rs = Server.CreateObject("ADODB.Recordset")
strSQL = "SELECT * FROM kategorier;"
rs.Open strSQL, conn, 1, 3
If Not (rs.BOF Or rs.EOF) Then
rs.move 0
  Do While Not rs.EOF
strInput = rs("beskrivelse")
strInput = replace(strInput, "æ", "&aelig;")
strInput = replace(strInput, "ø", "&oslash;")
strInput = replace(strInput, "å", "&aring;")
strInput = replace(strInput, "Æ", "&AElig;")
strInput = replace(strInput, "Ø", "&Oslash;")
strInput = replace(strInput, "Å", "&Aring;")
%><br /><br /><%=strInput%><br /><br /><%
rs.MoveNext
Loop
end if
rs.Close
Set rs = Nothing
%></font></td>
</tr>
</table><br /></td>
</tr>
</table>
</body>
</html>
<%
conn.Close
Set conn = Nothing
%>
Avatar billede erikjacobsen Ekspert
29. juli 2008 - 10:46 #14
Ok, serveren leverer ikke noget tegnsæt. Og det gør du heller ikke i din html/vbscript-kode.

Lad os for sjov skyld lad det være iso-8859-1 - det er nok bedste til denne obduktion.

Du tilføjer øverst i din .asp-fil: 

  Response.Header.CharSet="iso-8859-1"

og fortæller os hvilke tegn der kommer til at stå på siden for æ ø og å.

Og Stones Webwriter vil nok ikke lige vælge et Windows tegnsæt - det er temmelig tåbeligt, når noget skal på Internettet. Men ja, der er da en pæn chance for at det er noget, der minder om iso-8859-1.
Avatar billede Slettet bruger
29. juli 2008 - 10:49 #15
Okay, tak for hjælpen indtil videre. Jeg har nu sat koden ind, men følgende fejl fremkommer:

Object doesn't support this property or method: 'Response.Header'
Avatar billede Slettet bruger
29. juli 2008 - 11:03 #16
Jeg ved ikke om det giver samme resultat at skrive følgende, men jeg har gjort forsøget, og bogstaverne æ, ø og å er stadig ikke ændret:

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
Avatar billede erikjacobsen Ekspert
29. juli 2008 - 11:42 #17
Ja,skulle have været:

  Response.CharSet="iso-8859-1"

Men hvis du svarer på det der bliver spurgt om, kan det være vi får løst det hurtigere: "og fortæller os hvilke tegn der kommer til at stå på siden for æ ø og å."
Avatar billede Slettet bruger
29. juli 2008 - 12:46 #18
Der står stadig æ, ø og å, altså ingen ændringer... Men jeg gør det på en anden måde, for det er noget rod det her... Ligger det hele over i en mysql database hvor jeg har mere styr på det.

Jeg takker for Jeres input...
Avatar billede lifeenergy Nybegynder
19. august 2008 - 17:20 #19
Fand du ud af problemet?

Dette her virker fint hos mig:

Function FormatDKChar(strInput)
strInput = replace(strInput, "æ", "&aelig;")
strInput = replace(strInput, "ø", "&oslash;")
strInput = replace(strInput, "å", "&aring;")
strInput = replace(strInput, "Æ", "&AElig;")
strInput = replace(strInput, "Ø", "&Oslash;")
strInput = replace(strInput, "Å", "&Aring;")
FormatDKChar = strInput
End Function

Dim strContent

strSQL ="SELECT * FROM stories;"
Con.Execute(strSQL)

If NOT rs.EOF Then
  Do While NOT rs.EOF
    strContent = rs("Content")
    strContent = FormDKChar(strContent)
    Response.Write strContent

  rs.MoveNext
Loop
End If
Avatar billede lifeenergy Nybegynder
19. august 2008 - 17:22 #20
hov  strContent = FormDKChar(strContent) skal være ens med funktionens navn derfor
FormatDKChar(strContent)
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