webForumDet fria alternativet

ASP + UTF-8 + Access 2003

3 svar · 533 visningar · startad av lilja

liljaMedlem sedan juli 20041 183 inlägg
#1

Jag tror jag får spader snart då jag inte förstår vad som skall vara så svårt med detta. Finns det någon bra guide någonstans som beskriver hur man ska göra så att det blir bra?

Jag vill i en Access databas spara text och sedan skriva ut dem på en sida kodad i utf-8 med Server.HTMLEncode.

I databasen blir det en del konstiga tecken där å, ä, ö och liknande finns i texten men det fungerar att skriva ut så länge jag inte använder mig av Server.HTMLEncode.

Kör jag Server.HTMLEncode före jag sparar i databasen får jag en massa konstiga tecken på sidan när jag sedan skriver ut och i databasen byts å ute mot &#195 som är ASCII-värdet. Eller?

Hur ska jag göra för att få en korrekt UTF-8 ASP-sida?

http://jok.nu/sm/ultrasnacket.asp är sidan jag håller på med.

Jag skriver i ASP-filen

<%@ CodePage = 1252 %>
<%
Session.LCID = 1053
Response.Charset = "utf-8"
%>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

Behöver jag alla dessa rader och har jag missat något? Hur ska jag gå tillväga? Jag har redan sökt på Google och här på forumet men blir inte klokare då ingen skriver hur man gör när man ska köra en Server.HTMLEncode också.

liljaMedlem sedan juli 20041 183 inlägg
#2

Jo just de. I access-databasen är det inställt på Unicode-komprimering. Skickar med databasen...

liljaMedlem sedan juli 20041 183 inlägg
#3

Äh, efter att ha trixat jättelänge testade jag att ändra lite värden till det här.

<%@language="VBScript" codepage="65001" %><%
Response.CharSet = "utf-8"

och nu verkar det fungera klockrent! :) Har jag gjort rätt? Det ser bra ut i databasen och när jag skriver ut data på sidan, med eller utan Server.HTMLEncode.

Däremot blir jag lite konfunderad över

Response.CodePage = 65001

som man rekommenderas skriva. Om jag gör det får jag ett felmeddelande som lyder

Microsoft VBScript runtime  error '800a01b6'

Object doesn't support this property or method: 'Response.CodePage'

/sm/ultrasnacket.asp, line 4

Alltså, har jag gjort rätt och varför kan jag inte skriva Response.CodePage = 65001 ??

emissionMedlem sedan dec. 19996 721 inlägg
#4

Antagligen är det IIS <5.1. Du kan använda Session.CodePage = 65001 i stället. Inte samma sak, men eftersom du har LCID i Session-scope, så kan du ju lägga CodePage där också.

133 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)