Foros del Web » Programando para Internet » ASP Clásico »

ASP XHTML Access y las dichosas tildes.

Estas en el tema de ASP XHTML Access y las dichosas tildes. en el foro de ASP Clásico en Foros del Web. Bueno, después de leerme todos los post con respecto a este asunto y aplicar todas las soluciones expuestas no me queda más remedio que realizaros ...
  #1 (permalink)  
Antiguo 10/10/2011, 05:52
 
Fecha de Ingreso: diciembre-2010
Mensajes: 236
Antigüedad: 14 años
Puntos: 6
ASP XHTML Access y las dichosas tildes.

Bueno, después de leerme todos los post con respecto a este asunto y aplicar todas las soluciones expuestas no me queda más remedio que realizaros la consulta.

Primero paso a detallar con qué estoy trabajando.

ASP clásico y XHTML con base de datos Access formato 2003 (.mdb)

Este es mi DTD:
Código HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
Mi etiqueta html

Código HTML:
<html xmlns="http://www.w3.org/1999/xhtml"> 
Mi meta:
Código HTML:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 

El problema:

La página muestra símbolos en vez de las tildes, eñes y demás cuando escribo en pantalla un campo de la BD, pero si escribo directamente con tildes en la página ASP, estos sí me sale bien. Esto es exactamente lo que me sale:

Facebook Music �Qui�n ganar� con el nuevo servicio? ¿ ¡ Á É Í Ó Ú á é í ó ú ñ Ñ

La frase Facebook Music ¿Quién ganará con el nuevo servicio? pertenece al campo Título de la tabla noticias de la BD. Este tipo texto y se guarda como texto plano, sin HTML. El texto siguiente es una concatenación.

Esta es la línea de código:

Código HTML:
<div class="texto1">   
<%=Rs("Notitulo") & " ¿ ¡ Á É Í Ó Ú á é í ó ú ñ Ñ"%>
</div> 
Esto me tiene treméndamente amargado y angustiado, no veo la solución.
  #2 (permalink)  
Antiguo 10/10/2011, 06:00
 
Fecha de Ingreso: diciembre-2010
Mensajes: 236
Antigüedad: 14 años
Puntos: 6
Respuesta: ASP XHTML Access y las dichosas tildes.

Pruebas sin resultado:

Cambiar de utf-8 a iso-8859-1; no funciona

Con utf-8 escribo session.codepage = 65001; no funciona

=server.htmlencode(Rs("Noticia")); no funciona

Eliminar línea DTD; no funciona.

Línea:
<%@LANGUAJE="VBSCRIPT" CODEPAGE="65001"%>
tampoco funciona.

Última edición por PabloManuel; 10/10/2011 a las 06:09 Razón: más casos.
  #3 (permalink)  
Antiguo 10/10/2011, 09:09
 
Fecha de Ingreso: diciembre-2010
Mensajes: 236
Antigüedad: 14 años
Puntos: 6
Respuesta: ASP XHTML Access y las dichosas tildes.

Más pruebas, he abierto una página nueva en blanco, he seleccionado todo el texto del index.asp (que es donde está el problema) lo he pegado en la nueva página y este es el resultado:

Facebook Music ¿Quién ganará con el nuevo servicio? ¿ ¡ à É à Ó Ú á é Ã* ó ú ñ Ñ

ahora el problema es a la inversa, me lee bien de la base de datos, pero no me reproduce bien lo que escribo en el propio fichero ASP

código:

Código HTML:
<div class="texto1">   
	<%=Rs("Notitulo") & " ¿ ¡ Á É Í Ó Ú á é í ó ú ñ Ñ"%>
</div> 

Última edición por PabloManuel; 10/10/2011 a las 09:10 Razón: -
  #4 (permalink)  
Antiguo 10/10/2011, 09:40
 
Fecha de Ingreso: diciembre-2010
Mensajes: 236
Antigüedad: 14 años
Puntos: 6
Respuesta: ASP XHTML Access y las dichosas tildes.

Viendo que el problema puede ser del archivo en sí, he abierto el index.asp con el block de notas y guardado en UTF. Me sigue haciendo lo mismo.
  #5 (permalink)  
Antiguo 10/10/2011, 09:59
 
Fecha de Ingreso: diciembre-2010
Mensajes: 236
Antigüedad: 14 años
Puntos: 6
Respuesta: ASP XHTML Access y las dichosas tildes.

De momento he encontrado una solución, que no me cuadra nada.

He eliminado la siguiente línea del Head:
Código HTML:
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
Ahora tanto lo sacado de la BD tanto lo escrito en el propio archivo ASP, se ve correctamente en Chrome e IE8

En teoría es un campo importante en XHTML ¿Por qué me ocurre esto?
  #6 (permalink)  
Antiguo 10/10/2011, 21:58
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 11 meses
Puntos: 98
Respuesta: ASP XHTML Access y las dichosas tildes.

Cita:
Iniciado por PabloManuel Ver Mensaje
Viendo que el problema puede ser del archivo en sí, he abierto el index.asp con el block de notas y guardado en UTF. Me sigue haciendo lo mismo.

Haz dado con el problema, guarda tus archivos como ansi...tienes que asegurarte que todos Los archivos Sean ansi.

Saludos
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #7 (permalink)  
Antiguo 11/10/2011, 01:47
 
Fecha de Ingreso: diciembre-2010
Mensajes: 236
Antigüedad: 14 años
Puntos: 6
Respuesta: ASP XHTML Access y las dichosas tildes.

Pues no, no se soluciona, abrí el archivo con el block de notas y lo he guardado en ANSI, unicode, unicode big endian y UTF-8, mismo resultado.

De hecho leyendo en un foro decía que todo tiene que estar coordinado, el DTD el META y el formato del archivo. Lo puse todo con UTF-8 y nada.

Los errores siguen siendo dos:

1º - Me pone lo leído e la BD con caracteres raros y lo propio de la página bien.
2º - O viceversa.
  #8 (permalink)  
Antiguo 11/10/2011, 01:48
 
Fecha de Ingreso: diciembre-2010
Mensajes: 236
Antigüedad: 14 años
Puntos: 6
Respuesta: ASP XHTML Access y las dichosas tildes.

Ahora mismo funciona, pero porque he eliminado la línea META.
  #9 (permalink)  
Antiguo 11/10/2011, 05:07
Avatar de Expinete  
Fecha de Ingreso: abril-2006
Ubicación: Zaragoza
Mensajes: 236
Antigüedad: 18 años, 7 meses
Puntos: 3
Respuesta: ASP XHTML Access y las dichosas tildes.

A mí me pasaba algo parecido, pero hasta que no guardaba el archivo en el formato correspondiente con el notepad++ no se me arreglaba, de todas formas lo de las codificaciones es un mundo, tienes que tener en cuenta que desde el mismo navagador puedes cambiar el formato con el que se ve la página...

De todas forams como me decía algún que otro profesor... si te funciona, no lo toques :P
__________________
-----------------------------------------------------------
A veces un arbol no nos deja ver el bosque...
  #10 (permalink)  
Antiguo 11/10/2011, 14:24
Avatar de Batan  
Fecha de Ingreso: septiembre-2010
Ubicación: Madrid
Mensajes: 408
Antigüedad: 14 años, 2 meses
Puntos: 63
Respuesta: ASP XHTML Access y las dichosas tildes.

Si te funciona, has una copia del archivo y esa copia tocalo toh lo que puedas, a saco!!
  #11 (permalink)  
Antiguo 11/10/2011, 21:59
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 11 meses
Puntos: 98
Respuesta: ASP XHTML Access y las dichosas tildes.

Bueno, depende de varios factores, pero basicamente este problema es que en algun momento tu encoding no es el correcto:

Si haces UTF-8, todo (archivo, metas y DB) debe estar en UTF-8
Si haces otro tipo de encoding, digamos iso-8859-1, tus archivos deben ser ANSI y el collate de tus campos deben tener soporte para estos caracteres.

El tipo de error que describes es que alguna capa de tu sitio tiene el encoding distinto de los demas, sobre todo cuando dices que quitaste el encoding UTF-8 de tus meta tags.

Saludos
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #12 (permalink)  
Antiguo 12/10/2011, 11:09
Avatar de sjam7  
Fecha de Ingreso: diciembre-2001
Ubicación: Guadalajara, Mexico
Mensajes: 3.672
Antigüedad: 23 años
Puntos: 16
Respuesta: ASP XHTML Access y las dichosas tildes.

y si pones Response.CharSet = "UTF-8" antes de mandar a pantalla?

Yo por ejemplo tengo un archivo donde guardo muchas funciones para automatizar y simplificar muchas cosas y antes de mandar datos a pantalla pongo eso y me muestra los caracteres correctamente
  #13 (permalink)  
Antiguo 17/10/2011, 06:02
 
Fecha de Ingreso: diciembre-2010
Mensajes: 236
Antigüedad: 14 años
Puntos: 6
Respuesta: ASP XHTML Access y las dichosas tildes.

Gracias por vuestras respuestas, esto es como el cuento de la buena pipa, no termina nunca.

He hecho varias pruebas más y al no saber ya por donde iba he empezado de nuevo.

Para daros más datos, yo las páginas las he hecho toda la vida en FrontPage, Lope Edit o Notepad directamente, con ASP clásico sin Option Explicit con tablas y con Access anterior a 2007.

Decidí que ya era hora de cambiar y pasar a CSS, XHTML y MySql para más tarde pasarme a HTML 5 y CSS3.

Ahora tenía que empezar una Web y creí que este era el mejor momento, pero yo siempre trabajo con un proyecto anterior y voy cambiándole cosas (imágenes, algo de diseño, etc....).

Aquí creo que ha estado el problema. Ahora trabajo con Expression Web 4, ya desderré el Front Page y abrí una Web en Expressión realizada anteriormente en FrontPage para modificarla.

Creo que todo el follón está aquí, con las codificaciones de los archivos, tanto los de asp como los include, hay que tener en cuenta una cosa, yo en el Index (que está en UTF-8 en teoría) hago include de archivos que están en otro formato, a saber lo que puede salir de ahí.

Después de tanto pensar que hacer, he decidido lo siguiente.

He creado un nuevo sitio en blanco con Expresión Web y estoy importando poco a poco lo que me va haciendo falta, pero creando el archivo antes en Expression Web. Es decir, no importo el archivo, si no que creo uno en blanco, me voy al NotePad, copio el texto del archivo que me hace falta y lo pego en Expression Web para que se guarde con el formato correcto.

Como esto me va a llevar tiempo ya os contaré como rueda la cosa.

Pero me han surjido dudas con respecto a la Base de datos, he leído antes de u_goldman que los datos de la BD Access también tienen codificación ¿Donde se mira eso? he estado buscando por todas las propiedades y nada.
  #14 (permalink)  
Antiguo 17/10/2011, 09:22
 
Fecha de Ingreso: diciembre-2010
Mensajes: 236
Antigüedad: 14 años
Puntos: 6
Respuesta: ASP XHTML Access y las dichosas tildes.

Cita:
Iniciado por PabloManuel Ver Mensaje
Ahora mismo funciona, pero porque he eliminado la línea META.
Bueno, dejó de funcionar el día siguiente.
  #15 (permalink)  
Antiguo 17/10/2011, 09:25
 
Fecha de Ingreso: diciembre-2010
Mensajes: 236
Antigüedad: 14 años
Puntos: 6
Respuesta: ASP XHTML Access y las dichosas tildes.

Cita:
Iniciado por sjam7 Ver Mensaje
y si pones Response.CharSet = "UTF-8" antes de mandar a pantalla?

Yo por ejemplo tengo un archivo donde guardo muchas funciones para automatizar y simplificar muchas cosas y antes de mandar datos a pantalla pongo eso y me muestra los caracteres correctamente

Probado no funciona.
  #16 (permalink)  
Antiguo 17/10/2011, 09:33
 
Fecha de Ingreso: diciembre-2010
Mensajes: 236
Antigüedad: 14 años
Puntos: 6
Respuesta: ASP XHTML Access y las dichosas tildes.

EW4 = Expressión Web 4.0

Bueno resumiendo.

Ya he creado mi nuevo sitio Web en EW4 y tengo operativo el Index, me ha hecho falta crear todas mis funciones (revisarlas para que sean XHTML y no HTML) y todos mis includes.

Dicho archivo ya carga bien con el problema de antes:

Las tildes propias del código de la página aparecen correctas, pero lo que leo de la BD no, aparecen caracteres raros.

Estoy como al principio, que amargura:

¿Qué le tengo que hacer la a BD?
¿Qué es eso del collate?
¿El problema está en la sentencia SQL?

Ayuda por favor, ya han ido a buscar leña para prepararme la hoguera.

PD: He hecho una prueba más, he pasado la BD a formato Access 2010 a ver si resultaba, mismo resultado.

Última edición por PabloManuel; 17/10/2011 a las 09:45 Razón: Convertí la DB
  #17 (permalink)  
Antiguo 17/10/2011, 10:29
 
Fecha de Ingreso: diciembre-2010
Mensajes: 236
Antigüedad: 14 años
Puntos: 6
Respuesta: ASP XHTML Access y las dichosas tildes.

Bueno, pues he encontrado una solución que creo que es momentánea:

Código ASP:
Ver original
  1. <%
  2. option explicit
  3.  
  4. ' Simple functions to convert the first 256 characters
  5. ' of the Windows character set from and to UTF-8.
  6.  
  7. ' Written by Hans Kalle for Fisz
  8. ' http://www.fisz.nl
  9.  
  10. 'IsValidUTF8
  11. '  Tells if the string is valid UTF-8 encoded
  12. 'Returns:
  13. '  true (valid UTF-8)
  14. '  false (invalid UTF-8 or not UTF-8 encoded string)
  15. function IsValidUTF8(s)
  16.   dim i
  17.   dim c
  18.   dim n
  19.  
  20.   IsValidUTF8 = false
  21.   i = 1
  22.   do while i <= len(s)
  23.     c = asc(mid(s,i,1))
  24.     if c and &H80 then
  25.       n = 1
  26.       do while i + n < len(s)
  27.         if (asc(mid(s,i+n,1)) and &HC0) <> &H80 then
  28.           exit do
  29.         end if
  30.         n = n + 1
  31.       loop
  32.       select case n
  33.       case 1
  34.         exit function
  35.       case 2
  36.         if (c and &HE0) <> &HC0 then
  37.           exit function
  38.         end if
  39.       case 3
  40.         if (c and &HF0) <> &HE0 then
  41.           exit function
  42.         end if
  43.       case 4
  44.         if (c and &HF8) <> &HF0 then
  45.           exit function
  46.         end if
  47.       case else
  48.         exit function
  49.       end select
  50.       i = i + n
  51.     else
  52.       i = i + 1
  53.     end if
  54.   loop
  55.   IsValidUTF8 = true
  56. end function
  57.  
  58. 'DecodeUTF8
  59. '  Decodes a UTF-8 string to the Windows character set
  60. '  Non-convertable characters are replace by an upside
  61. '  down question mark.
  62. 'Returns:
  63. '  A Windows string
  64. function DecodeUTF8(s)
  65.   dim i
  66.   dim c
  67.   dim n
  68.  
  69.   i = 1
  70.   do while i <= len(s)
  71.     c = asc(mid(s,i,1))
  72.     if c and &H80 then
  73.       n = 1
  74.       do while i + n < len(s)
  75.         if (asc(mid(s,i+n,1)) and &HC0) <> &H80 then
  76.           exit do
  77.         end if
  78.         n = n + 1
  79.       loop
  80.       if n = 2 and ((c and &HE0) = &HC0) then
  81.         c = asc(mid(s,i+1,1)) + &H40 * (c and &H01)
  82.       else
  83.         c = 191
  84.       end if
  85.       s = left(s,i-1) + chr(c) + mid(s,i+n)
  86.     end if
  87.     i = i + 1
  88.   loop
  89.   DecodeUTF8 = s
  90. end function
  91.  
  92. 'EncodeUTF8
  93. '  Encodes a Windows string in UTF-8
  94. 'Returns:
  95. '  A UTF-8 encoded string
  96. function EncodeUTF8(s)
  97.   dim i
  98.   dim c
  99.  
  100.   i = 1
  101.   do while i <= len(s)
  102.     c = asc(mid(s,i,1))
  103.     if c >= &H80 then
  104.       s = left(s,i-1) + chr(&HC2 + ((c and &H40) / &H40)) + chr(c and &HBF) + mid(s,i+1)
  105.       i = i + 1
  106.     end if
  107.     i = i + 1
  108.   loop
  109.   EncodeUTF8 = s
  110. end function
  111. %>

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
  #18 (permalink)  
Antiguo 17/10/2011, 10:49
 
Fecha de Ingreso: agosto-2011
Mensajes: 68
Antigüedad: 13 años, 3 meses
Puntos: 11
Respuesta: ASP XHTML Access y las dichosas tildes.

Bueno, yo tuve ese problema y lo puede solucionar con UTF-8 (con eso escribía bien los registros en BD de Access) y en cuanto a los caracteres que se muestran a través de código, tuve que sustituir:

á -> &aacute
é -> &eacute
í -> &iacute
ó -> &oacute
ú -> &uacute

Eso lo debes hacer en la parte de código

....

Haz una prueba a ver...
  #19 (permalink)  
Antiguo 18/10/2011, 03:36
 
Fecha de Ingreso: diciembre-2010
Mensajes: 236
Antigüedad: 14 años
Puntos: 6
Respuesta: ASP XHTML Access y las dichosas tildes.

Cita:
Iniciado por dicuenca77 Ver Mensaje
Bueno, yo tuve ese problema y lo puede solucionar con UTF-8 (con eso escribía bien los registros en BD de Access) y en cuanto a los caracteres que se muestran a través de código, tuve que sustituir:

á -> &aacute
é -> &eacute
í -> &iacute
ó -> &oacute
ú -> &uacute

Eso lo debes hacer en la parte de código

....

Haz una prueba a ver...
Puff,,, eso me parece volver a los 70, es increíble que ha estas alturas tengamos que hacer esto.

Yo me niego, prefiero tener que usar las funciones anteriores. Yo comento mucho mi código e intento no tener faltas de ortografía (que las tengo, no soy perfecto) eso me haría también modificar los comentarios, he hecho uno de los últimos errores fue que al guardar el archivo con EW4, él solo me cambiaba las vocales y eñes por su código, es decir, lo que escribes tú antes.

La solución a esto tiene que ser más sencilla, tiene que haber algo en SQL que te lea en UTF-8, en PHP lo hay.
  #20 (permalink)  
Antiguo 18/10/2011, 07:19
Avatar de Batan  
Fecha de Ingreso: septiembre-2010
Ubicación: Madrid
Mensajes: 408
Antigüedad: 14 años, 2 meses
Puntos: 63
Respuesta: ASP XHTML Access y las dichosas tildes.

Prueba con response.codePage haber...

http://www.gravitynet.es/support/ind...barticleid=521

Saludos

Etiquetas: asp, eñes, tildes
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:50.