|
| AJAX -> ASP - DB og/eller DB -> ASP -> AJA~ Fra : Stig Johansen |
Dato : 30-01-08 13:13 |
|
Notice: X-post
Hej begge grupper
Jeg sidder og leger lidt med ASP og AJAX osv.
Jeg har bemærket, at ASP/Windows ikke umiddlebart understøtter UTF-8, som er
standard (XML).
Jeg synes jeg har ledt, men har ikke kunnet finde noget ude på nettet.
(Jeg bruger ikke ASP normalt).
Man kan tilsyneladende få ÆØÅ osv. til at se rigtigt ud, men på min Win
server lander dataene som utf-8 i databasen.
Det er jeg ikke så glad for, hvis man skal bruge data'ene i andre
sammenhænge.
Jeg har derfor forfattet 2 funktioner i ASP
1) Function UTF8toAnsi (UTF8String)
Beregnet til at _modtage_ UTF8 fra request.form og returnerer Ansi
(ISO-8859-1), om det er 100% kompatibelt med Win 1250 ved jeg ikke.
2) Function AnsitoUTF8 (AnsiString)
Beregnet til at sende data i utf-8.
For at teste, har jeg klasket denne her form(UTF8toAnsi.htm) sammen:
<html>
<head>
<title>UTFtoAnsi test form</title>
</head>
<body>
<form method="POST" action="UTF8toAnsi.asp">
<p> UTF 8
<input type="text" name="UTFString" ><br>
</p>
<p> Ansii
<input type="text" name="AnsiString" ><br>
</p>
<input type="submit" value="Submit">
</form>
</body>
</html>
Og lavet et lille ASP script(UTF8toAnsi.asp) til test:
<%@ LANGUAGE = VBScript %>
<% Option Explicit %>
<HEAD>
<TITLE>UTF8toAnsi</TITLE>
</HEAD>
<HTML>
<BODY>
<P>Utf = <%= Request.Form("UTFString") %><P>
<P>UtftoAnsi = <%= UTF8toAnsi (Request.Form("UTFString")) %><P>
<P>Ansi = <%= Request.Form("AnsiString") %><P>
<P>AnsitoUTF = <%= AnsitoUTF8 (Request.Form("AnsiString")) %><P>
</BODY>
</HTML>
<!--#include file="UTF8toAnsi.inc.asp"-->
Og endelig include filen (UTF8toAnsi.inc.asp) med de 2 funktioner:
<%
'--------------------------------------------------------------------------------------
Function UTF8toAnsi (UTF8String)
Dim P ' position
Dim S ' Start
P = InStr(UTF8String,chr(195))
if P = 0 then
UTF8toAnsi = UTF8String ' no non-ascii chars
else
UTF8toAnsi = ""
S = 1
Do While P > 0
if P-S > 0 then
UTF8toAnsi = UTF8toAnsi + Mid (UTF8String,S,P-S) ' non ascii
end if
UTF8toAnsi = UTF8toAnsi + Chr(192 + (Asc(Mid (UTF8String,P+1,1))
mod 64 ))' the offset in table
S = P + 2
P = InStr(S,UTF8String,chr(195))
loop
end if
end Function ' UTF8toAnsi
'--------------------------------------------------------------------------------------
Function AnsitoUTF8 (AnsiString)
Dim P ' position
Dim L ' len
Dim C ' char no
L = Len (AnsiString)
For P = 1 to L
C = Asc(Mid (AnsiString,P,1))
IF C < 128 then
AnsitoUTF8 = AnsitoUTF8 + chr(C)
else
AnsitoUTF8 = AnsitoUTF8 + chr(195) + chr(128 + C mod 64)
end if
Next
end Function ' AnsitoUTF8
'--------------------------------------------------------------------------------------
%>
Hvis man gemer de 3 filer, der er nævnt i parantes, skulle det være lige ud
ad landevejen.
Jeg har ikke X-futtet, da evt indlæg kan være relevant i begge grupper.
--
Med venlig hilsen
Stig Johansen
| |
Stig Johansen (30-01-2008)
| Kommentar Fra : Stig Johansen |
Dato : 30-01-08 13:37 |
|
Stig Johansen wrote:
> Notice: X-post
> Jeg har derfor forfattet 2 funktioner i ASP
Med en lille smutter i, her er en update:
<%
'--------------------------------------------------------------------------------------
Function UTF8toAnsi (UTF8String)
Dim P ' position
Dim S ' Start
Dim L ' len
P = InStr(UTF8String,chr(195))
if P = 0 then
UTF8toAnsi = UTF8String ' no non-ascii chars
else
L = Len (UTF8String)
UTF8toAnsi = ""
S = 1
Do While P > 0
if P-S > 0 then
UTF8toAnsi = UTF8toAnsi + Mid (UTF8String,S,P-S) ' non ascii
end if
UTF8toAnsi = UTF8toAnsi + Chr(192 + (Asc(Mid (UTF8String,P+1,1))
mod 64 ))' the offset in table
S = P + 2
P = InStr(S,UTF8String,chr(195))
loop
if S <= L then UTF8toAnsi = UTF8toAnsi + Mid (UTF8String,S,L-S+1)
end if
end Function ' UTF8toAnsi
'--------------------------------------------------------------------------------------
Function AnsitoUTF8 (AnsiString)
Dim P ' position
Dim L ' len
Dim C ' char no
L = Len (AnsiString)
For P = 1 to L
C = Asc(Mid (AnsiString,P,1))
IF C < 128 then
AnsitoUTF8 = AnsitoUTF8 + chr(C)
else
AnsitoUTF8 = AnsitoUTF8 + chr(195) + chr(128 + C mod 64)
end if
Next
end Function ' AnsitoUTF8
'--------------------------------------------------------------------------------------
%>
--
Med venlig hilsen
Stig Johansen
| |
|
|