BD Externas, Acentos y otras delicias


([N3] veldevelop) #1

Hola compañeros, estoy trabajando en una solución de interconexión de múltiples bases de datos, Acces, SQLLITE, postgresql, SQLServer, Oracle y DB2, hasta ahora me he peleado con DB2 que es la que más me interesa y he detectado un fallo importante que quiero compartir por si a alguien le ocurre trasteando con bases de datos externas ya que según parece, esto no está todo lo fino que debiera y me explico.

A priori he probado con las cadenas de conexión http://www.connectionstrings.com/ y estupendo.

Driver={IBM DB2 ODBC DRIVER};Database=myDataBase;Hostname=myServerAddress;
Port=1234;Protocol=TCPIP;Uid=myUsername;Pwd=myPassword;

Por un momento he dicho Velneo es la ostia Binnnnnnnnngo. Hasta que un pequeño detalle me llamó la atención, los acentos, comencé a buscar por todas partes algún parámetro que pudiera agregar a la cadena de conexión pero para DB2 un servidor no ha encontrado gran cosa y lo que encuentro es mas bien difuso.

Seguí trabajando e hice una consulta SQL que me devolvía 636 registros tanto en acces conectado vía odbc como en un cliente multibd también me devolvían los mismos 636 registros, velneo via Driver solo devuelve 25, conectado vía odbc devuelve 636 pero sigue con el problema de los acentos mientras que las otras herramientas lo representan a la perfección.

¿Alguien ha tenido estos problemas con otras BD’s?


([N1] wikan) #2

Yo llevo una semana haciendo una importación desde MySQL y sin problemas con los acentos.

El problema lo tienes directamente desde la variable que recibe la columna o luego cuando grabas en el campo??


([N3] veldevelop) #3

El problema está directamente en la variable, con respecto a MySql existe un parámetro charset que te permite indicar que juego de caracteres usas pero en DB2 como he indicado no encuentro nada.



([N4] velavisual) #4

@veldevelop

¿Has comprobado el juego de caracteres usado en DB2?

http://www.connectionstrings.com/ibm-db2/

Specifying schema

Server=myAddress:myPortNumber;Database=myDataBase;UID=myUsername;PWD=myPassword;
CurrentSchema=mySchema;

Verifica en la propia base de datos DB2 qué esquema está usando.

Tal vez puedas realizar una base de datos de ejemplo y especificar el juego de caracteres correcto y probar con ella.

Es posible que DB2 use Unicode UTF-8 (el cual emplea símbolos de longitud variable) y no sé si tal vez debería existir una conversión previa antes de recibir la cadena válida para tí.

Prueba a ver si usas la última versión del driver ODBC.