Bueno, pues he encontrado una solución que creo que es momentánea:
Código ASP:
Ver original<%
option explicit
' Simple functions to convert the first 256 characters
' of the Windows character set from and to UTF-8.
' Written by Hans Kalle for Fisz
' http://www.fisz.nl
'IsValidUTF8
' Tells if the string is valid UTF-8 encoded
'Returns:
' true (valid UTF-8)
' false (invalid UTF-8 or not UTF-8 encoded string)
function IsValidUTF8(s)
dim i
dim c
dim n
IsValidUTF8 = false
i = 1
do while i <= len(s)
c = asc(mid(s,i,1))
if c and &H80 then
n = 1
do while i + n < len(s)
if (asc(mid(s,i+n,1)) and &HC0) <> &H80 then
exit do
end if
n = n + 1
loop
select case n
case 1
exit function
case 2
if (c and &HE0) <> &HC0 then
exit function
end if
case 3
if (c and &HF0) <> &HE0 then
exit function
end if
case 4
if (c and &HF8) <> &HF0 then
exit function
end if
case else
exit function
end select
i = i + n
else
i = i + 1
end if
loop
IsValidUTF8 = true
end function
'DecodeUTF8
' Decodes a UTF-8 string to the Windows character set
' Non-convertable characters are replace by an upside
' down question mark.
'Returns:
' A Windows string
function DecodeUTF8(s)
dim i
dim c
dim n
i = 1
do while i <= len(s)
c = asc(mid(s,i,1))
if c and &H80 then
n = 1
do while i + n < len(s)
if (asc(mid(s,i+n,1)) and &HC0) <> &H80 then
exit do
end if
n = n + 1
loop
if n = 2 and ((c and &HE0) = &HC0) then
c = asc(mid(s,i+1,1)) + &H40 * (c and &H01)
else
c = 191
end if
s = left(s,i-1) + chr(c) + mid(s,i+n)
end if
i = i + 1
loop
DecodeUTF8 = s
end function
'EncodeUTF8
' Encodes a Windows string in UTF-8
'Returns:
' A UTF-8 encoded string
function EncodeUTF8(s)
dim i
dim c
i = 1
do while i <= len(s)
c = asc(mid(s,i,1))
if c >= &H80 then
s = left(s,i-1) + chr(&HC2 + ((c and &H40) / &H40)) + chr(c and &HBF) + mid(s,i+1)
i = i + 1
end if
i = i + 1
loop
EncodeUTF8 = s
end function
%>
Se trata de dos funciones para codificar y codificar cadenas.
Ahora los campos que me salen mal tengo que pasarlos por estas funciones, lo cual es una putada porque tendré que revisar todo el código y algo se me escapará.
Dejo pendiente las altas en la base de datos, lo cual no quiero ni pensarlo.
url original:
http://www.codetoad.com/asp_utf8.asp