Foros del Web » Programación para mayores de 30 ;) » .NET »

No reconoce los caracteres acentuados en los headers de un DataTable leído en MySQL

Estas en el tema de No reconoce los caracteres acentuados en los headers de un DataTable leído en MySQL en el foro de .NET en Foros del Web. Estoy migrando una aplicación en VB.Net 2003 a VB.Net 2005, y todo va de maravillas excepto.... Excepto que en algunas consultas se necesita que los ...
  #1 (permalink)  
Antiguo 06/05/2011, 08:31
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
No reconoce los caracteres acentuados en los headers de un DataTable leído en MySQL

Estoy migrando una aplicación en VB.Net 2003 a VB.Net 2005, y todo va de maravillas excepto....
Excepto que en algunas consultas se necesita que los alias de los campos sean palabras que lleven sus acentos correspondientes. Normalmente esto se logra en MySQL poniendo ese alias entre apóstrofes (') o entre acentos inversos (`), y a nivel de SQL anda bien, pero cuando uso un DataAdapter para leer la tabla, estos alias son mal interpretados, quedando cosas como "Ã", en lugar de "á"
¿Cómo puedo evitar este problema?

Detalles a tener en cuenta.
  • La conexión está configurada para UTF8, pero el problema subsiste si se usa LATIN1 también.
  • El problema no se producía antes, con la versión en VB.Net 2003, e incluso no se produce si uso esa versión en la misma PC, por lo que no es un problema con la base, sino con el 2005.
  • Cambiar manualmente los headers no es una opción. Son demasiadas líneas de código, porque la aplicación tiene decenas de consultas en diversos niveles.
  • Cambiar las consultas tampoco es una opción, porque esos alias se usan en otros niveles de subconsultas, y se necesitan escritos de ESA forma, por requerimientos de los clientes.
  • Además, los procedimientos, triggers y consultas a la base ya ocupan más de 18000 líneas (si, es un sistema muy complejo, y con muchos procesos diferentes).
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #2 (permalink)  
Antiguo 06/05/2011, 15:35
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: No reconoce los caracteres acentuados en los headers de un DataTable leído

Bien. Resolver el problema costó, pero lo logré.
El tema pasa por modificar el charset de salida del cliente en el server de MySQL. Esta documentado como un bug, pero en realidad es simple: A continucación de abrir la conexión, se debe ejecutar una consulta así:
Código vb.net:
Ver original
  1. Dim sSQL As String = "SET character_set_results=latin1"
  2. Sentencias = New MySqlCommand(sSQL, Conexion)
  3. Sentencias.ExecuteNonQuery()
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: caracteres, datatable, mysql, reconoce
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 19:47.