webForumDet fria alternativet

eurotecken blir felaktigt

ASP

2 svar · 1 610 visningar · startad av Mika3l

Medlem sedan nov. 20018 492 inlägg
Frågan#1

Vet inte helt hundra om det beror på min aspkod men i vilket fall som helst så vill jag skriva ut €-tecknet men får ett felaktigt tecken (i Firefox står det en FF FD i en liten ruta). Kan jag omvandla det till ANSI eller på något annat sätt lösa problemet? Det fungerar med tecknet så länge jag skriver ut det vanligt men med ASP (och AJAX) blir det problem. Texten ligger i ett varchar-fält i en MySQL-databas.

Koden:

<table border="0" cellspacing="6" align="left">
<tbody>
<tr>
<td align="left" valign="top">&nbsp;</td>
<td align="left" valign="top"><p><strong>L&aring;gs&auml;song</strong><br />1.1. - 20.6.<br />11.8. - 31.12.</p></td>
<td align="left" valign="top">
<p><strong>H&ouml;gs&auml;song</strong><br />21.06 - 10.08</p>
</td>
</tr>
<%
Set rs = Server.CreateObject("ADODB.RecordSet")
'SQL = "SELECT f_pcid,f_name_" & Session("lang") & " FROM tblPriceCats ORDER BY f_pcid"
SQL = "SELECT * FROM tblpricecats"
'Response.Write(SQL)
rs.Open SQL, Connection
If NOT rs.EOF Then
Do Until rs.EOF
Response.Write("<tr><td align=""left"" valign=""top""><strong>" & rs("f_name_sv") & "</strong></td>")
Response.Write("<td align=""left"" valign=""top"">&nbsp;</td><td align=""left"" valign=""top"">&nbsp;</td></tr>")
Set rs2 = Server.CreateObject("ADODB.Recordset")
SQL2 = "SELECT f_sv,f_sek_l,f_sek_h,f_euro_l,f_euro_h FROM tblPrices ORDER BY f_pid"
rs2.Open SQL2, Connection
If NOT rs2.EOF Then
Do Until rs2.EOF
Response.Write("<tr><td align=""left"" valign=""top"">" & rs2("f_sv") & "</td>")
strCurr = Trim(LCase(Replace(Replace(Request.QueryString("currency"),"'",""),"%","")))
If strCurr = "" OR strCurr = "sek" Then
Response.Write("<td align=""left"" valign=""top"">" & rs2("f_sek_l") & "</td>")
Response.Write("<td align=""left"" valign=""top"">" & rs2("f_sek_h") & "</td>")
ElseIf strCurr = "euro" Then
Response.Write("<td align=""left"" valign=""top"">" & rs2("f_euro_l") & "</td>")
Response.Write("<td align=""left"" valign=""top"">" & rs2("f_euro_h") & "</td></tr>")
Else
Response.Redirect("?lang=" & lang & "&currency=sek")
End If
rs2.MoveNext
Loop
End If
rs2.Close : Set rs2 = Nothing
rs.MoveNext
Loop
End If
rs.Close : Set rs = Nothing
%>
</tbody>
</table>
Medlem sedan feb. 20041 816 inlägg
#2

Var noga med att ange encoding/charset och spara alla filer med matchande charset så ska det gå vägen. Förutsatt att du kör med en som har stöd för eurotecknet. FYI, ISO-8859-1 har det inte däremot finns det en utökning, ISO-8859-15, som har det.

Finns ingen annan utväg kan man köra med replace() och ersätta tecknet med dess HTML-entitet, &euro eller & #8364 . Det bästa vore förstås att köra med unicode rakt igenom. :)

Medlem sedan nov. 20018 492 inlägg
#3

Funkade ju fint med Replace() bara, tack :)

253 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
120 ms — deklarationer (db)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)
120 ms — ändringar (db)